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);
        }
Exemple #2
0
        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
                    }
                }
            }
        }
Exemple #3
0
        //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;
 }
Exemple #5
0
 public QuoteModule(ResponseAwaiter response, IConfiguration config)
 {
     _responseAwaiter = response;
     _config          = config;
 }
Exemple #6
0
 private void Setup()
 {
     _timeout        = new Timeout(_timeoutInMilliseconds);
     ResponseAwaiter = new ResponseAwaiter(_timeout);
 }