public static Dictionary <ResponseType, ResponseAwaiter> GetProperAwaitersDictionary() { var responseAwaiterDictionary = new Dictionary <ResponseType, ResponseAwaiter>(); responseAwaiterDictionary.Add(ResponseType.Confirmation, ResponseAwaiter.GetNewInstance(new Timeout(DefaultProtocolValues.ConfirmationTimeout))); responseAwaiterDictionary.Add(ResponseType.Reply, ResponseAwaiter.GetNewInstance(new Timeout(DefaultProtocolValues.ReplyTimeout))); return(responseAwaiterDictionary); }
public async Task HandleRPS(SocketCommandContext ctx, ulong mentionedUserId, ResponseAwaiter responseService) { var mentionedUser = await ctx.Channel.GetUserAsync(mentionedUserId); var result = await responseService.GetResponseFromUser(mentionedUserId, ctx.Channel.Id); if (!result.HasErrors) { if (result.Data.ToLower() == "y") { await ctx.Channel.SendMessageAsync($"RPS! {ctx.User.Mention} vs. {mentionedUser.Mention}"); await ctx.Channel.SendMessageAsync("*Note: *MuskBot* will message you individually in a DM.*"); //start rps game. var userOneDM = await ctx.User.GetOrCreateDMChannelAsync(); var userTwoDM = await mentionedUser.GetOrCreateDMChannelAsync(); await userOneDM.SendMessageAsync("type `rock` `paper` or `scissors` in this DM."); var userOneResponse = await responseService.GetResponseFromUser(ctx.User.Id, userOneDM.Id); await userTwoDM.SendMessageAsync("type `rock` `paper` or `scissors` in this DM."); var userTwoResponse = await responseService.GetResponseFromUser(mentionedUserId, userTwoDM.Id); if (!userOneResponse.HasErrors && !userTwoResponse.HasErrors) { await ctx.Channel.SendMessageAsync($"{ctx.User.Mention} used {userOneResponse.Data} and {mentionedUser.Mention} used {userTwoResponse.Data}"); } else { await ctx.Channel.SendMessageAsync("A player didn't answer in time and the game has been canceled"); //timeout or error occured } } } }
//TODO: reduce this function public async Task HandleMessage(string mention, ResponseAwaiter response, ulong callerId, ulong callingChannelId, SocketCommandContext ctx) { var id = Regex.Replace(mention, @"[^\d]", ""); var result = await response.GetResponseFromUser(callerId, callingChannelId); if (!result.HasErrors) { var allUsers = ctx.Guild.Users.ToList(); var channels = ctx.Guild.Channels.ToList(); var channelMention = result.Data; var channel = channels.FirstOrDefault(x => x.Name == channelMention); if (channel != null) { var userFound = allUsers.FirstOrDefault(x => x.Id.ToString() == id); if (userFound != null) { if (channel.Users.Contains(userFound)) { var textChannel = (ITextChannel)channel; await textChannel.SendMessageAsync(Quips.GetRandomQuip(userFound.Mention)); } else { await ctx.Channel.SendMessageAsync($"{channel.Name} does not contain that user..."); } } else { await ctx.Channel.SendMessageAsync($"**The Musk** could not locate that user - {mention}."); } } else { await ctx.Channel.SendMessageAsync("Do not try to fool the Musk. That channel is nonexistent."); } } //else time-out occured }
public RPSGameService(ResponseAwaiter responseAwaiter) { _responseAwaiter = responseAwaiter; }
public QuoteModule(ResponseAwaiter response, IConfiguration config) { _responseAwaiter = response; _config = config; }
private void Setup() { _timeout = new Timeout(_timeoutInMilliseconds); ResponseAwaiter = new ResponseAwaiter(_timeout); }