Ejemplo n.º 1
0
 public async Task MessageReceiveAsync(Discord.WebSocket.SocketMessage rawMessage)
 {
     if (!(rawMessage is SocketUserMessage message))
     {
         return;
     }
     if (message.Source != Discord.MessageSource.User)
     {
         return;
     }
     addMessageToModel(message.Content);
     if (message.Attachments.Count > 0)
     {
         foreach (var attachment in message.Attachments)
         {
             if (attachment.Filename.EndsWith(".txt"))
             {
                 using (var stream = await _webService.GetFileAsStream(attachment.Url))
                 {
                     var reader  = new StreamReader(stream);
                     var content = reader.ReadToEnd();
                     addMessageToModel(content);
                 }
             }
         }
     }
     if (_rand.Next(0, 100) == 0)
     {
         await message.Channel.SendMessageAsync(GenerateMessage(""), false, null, null, null, new Discord.MessageReference(message.Id));
     }
 }
Ejemplo n.º 2
0
 private async Task Client_MessageReceived(Discord.WebSocket.SocketMessage arg)
 {
     if (arg.Author.IsBot)
     {
         return;
     }
     if (TryGetValue(arg.Content, out var possibles))
     {
         await arg.Channel.SendMessageAsync(possibles[Program.RND.Next(0, possibles.Count)],
                                            messageReference : new MessageReference(arg.Id, arg.Channel.Id));
     }
     if (IsChangeEnabled && arg.Author is SocketGuildUser gUser && arg.Channel is SocketGuildChannel channel)
     {
         var guild = channel.Guild;
         var role  = gUser.Roles.FirstOrDefault(x => x.Name == "Rainbow");
         if (role != null)
         {
             if (BlockChange.GetValueOrDefault() == false)
             {
                 BlockChange.Value = true;
                 var color = role.Color;
                 var i     = indexOf(color.R, color.G, color.B);
                 if (++i >= RAINBOW.Count)
                 {
                     i = 0;
                 }
                 var clr = RAINBOW[i];
                 await role.ModifyAsync(x => x.Color = new Color(clr[0], clr[1], clr[2]));
             }
         }
     }
 }
Ejemplo n.º 3
0
        private async Task Client_MessageReceived(Discord.WebSocket.SocketMessage arg)
        {
            if (arg.Author.IsBot || arg.Author.IsWebhook || !(arg is IUserMessage userMessage))
            {
                return;
            }
            if (!(Watched.TryGetValue(arg.Author.Id, out var users)))
            {
                return;
            }
            if (users.Count == 0)
            {
                Watched.Remove(arg.Author.Id);
                return;
            }
            if (string.IsNullOrWhiteSpace(arg.Content))
            {
                return;
            }
            if (arg.Content.Length <= 8 || arg.Content.Split(' ').Length <= 1)
            {
                return;
            }
            if (arg.Content.StartsWith("!"))
            {
                // check if Rhythm in channel
                var a = await arg.Channel.GetUserAsync(235088799074484224);

                if (a != null)
                {
                    return;
                }
            }
        }
        private async Task Client_MessageReceived(Discord.WebSocket.SocketMessage arg)
        {
            GiveAwayValues inits = GetCurrentInitValues();

            if (inits != null)
            {
                if (arg is SocketUserMessage userMessage &&
                    !userMessage.Author.IsBot &&
                    userMessage.Channel == inits.SourceChannel &&
                    userMessage.Author == inits.AdminUser &&
                    !userMessage.Content.ToLower().Equals("%cancel"))
                {
                    string message = null;
                    switch (inits.State)
                    {
                    case GiveAwayState.SetGiveAwayTime:
                        message = _functions.SetGiveAwayTime(inits, userMessage.Content);
                        await ReplyAsync(message);

                        break;

                    //case GiveAwayState.SetCountGiveAways:
                    //    message = _functions.SetCountGiveAways(inits, userMessage.Content);
                    //    await ReplyAsync(message);
                    //    break;
                    case GiveAwayState.SetAwardCultures:
                        message = _functions.SetAwardCultures(inits, userMessage.Content);
                        await ReplyAsync(message);

                        break;

                    case GiveAwayState.SetCodeword:
                        message = _functions.SetCodeword(inits, userMessage.Content);
                        await ReplyAsync(message);

                        break;

                    case GiveAwayState.SetAward:
                        message = _functions.SetAward(inits, userMessage.Content);
                        await ReplyAsync(message);

                        break;
                    }
                }

                if (inits.State == GiveAwayState.Initialized)
                {
                    _discordClient.Client.MessageReceived -= Client_MessageReceived;
                }
            }
        }
Ejemplo n.º 5
0
        private async System.Threading.Tasks.Task Client_MessageReceived(Discord.WebSocket.SocketMessage arg)
        {
            if (arg.Channel.Name != "maths")
            {
                return;
            }
            string message = arg.Content;

            if (!shouldRespond(message))
            {
                return;
            }
            message = message[0] == '.' ? message.Substring(1) : message;
            await ReplyTeXMessage(message, arg);
        }
Ejemplo n.º 6
0
        private static Task Client_MessageReceived(Discord.WebSocket.SocketMessage arg)
        {
            try
            {
                var discordMessage = new DiscordMessageWrapper(arg);
                _ = bbb.MessageReceived(discordMessage);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
            }

            //HACK: See Discord.Net/issues/1115
            return(Task.CompletedTask);
        }
Ejemplo n.º 7
0
        public async Task LoadChips(Discord.WebSocket.SocketMessage message = null)
        {
            //chipLibrary.Clear();
            ConcurrentDictionary <string, Chip> newChipLibrary = new ConcurrentDictionary <string, Chip>();
            string chips = (await client.GetStringAsync(ChipUrl)).Replace("’", "'");

            chips = Regex.Replace(chips, "[\r]", string.Empty);
            var chipList = chips.Split("\n").ToList();

            if (File.Exists("./specialChips.txt"))
            {
                chipList.AddRange((await GetFileContents("./specialChips.txt")).Split("\n"));
            }
            chipList = chipList.AsParallel().WithMergeOptions(ParallelMergeOptions.FullyBuffered)
                       .Where(a => a.Trim() != string.Empty).ToList();
            var badChips = new List <string>();

            for (int i = 0; i < chipList.Count; i += 2)
            {
                var res = chipTest.Match(chipList[i]);
                if (!res.Success)
                {
                    badChips.Add(chipList[i]);
                    continue;
                }
                string skillUser   = null;
                string skillTarget = null;
                var    skillRes    = saveRegexTest.Match(chipList[i + 1]);
                if (skillRes.Success)
                {
                    skillTarget = skillRes.Groups[1].ToString(); //skill the target uses
                    skillUser   = skillRes.Groups[2].ToString(); //skill the user uses
                }
                Chip toAdd = new Chip(
                    res.Groups[1].ToString(),              //name
                    res.Groups[4].ToString(),              //range
                    res.Groups[5].ToString(),              //damage
                    res.Groups[7].ToString(),              //hits
                    res.Groups[6].Success ?
                    res.Groups[6].ToString() : "Standard", //type
                    res.Groups[2]
                    .ToString().Trim()
                    .Split(", "),    //element
                    res.Groups[3]
                    .ToString().Trim()
                    .Split(", "),    //skill
                    chipList[i + 1], //description
                    chipList[i]
                    + "\n"
                    + chipList[i + 1],     //all
                    skillUser,
                    skillTarget
                    );
                newChipLibrary.TryAdd(res.Groups[1].ToString().ToLower(), toAdd);
            }
            chipLibrary = newChipLibrary;
            string reply;

            if (badChips.Count == 0)
            {
                reply = string.Format("{0} chips loaded", chipLibrary.Count);
            }
            else if (badChips.Count == 1)
            {
                reply = string.Format("There was one bad chip\n```{0}```", badChips[0]);
            }
            else
            {
                reply = string.Format("There were {0} bad chips\n```{1}```", badChips.Count, badChips[0]);
            }

            if (message != null)
            {
                await message.Channel.SendMessageAsync(reply);
            }
            else
            {
                System.Console.WriteLine(reply);
            }

            /*try
             * {
             *  await StoreInDB();
             * }
             * catch (Exception e)
             * {
             *  Console.WriteLine(e.Message);
             *  Console.WriteLine(e.StackTrace);
             * }*/

#if !DEBUG
            var toConvert = (from kvp in chipLibrary.AsParallel().
                             WithMergeOptions(ParallelMergeOptions.FullyBuffered)
                             select kvp.Value)
                            .OrderBy(aChip => aChip.Name).ToList();
            string toWrite    = JsonConvert.SerializeObject(toConvert, Formatting.Indented);
            var    writeSream = System.IO.File.CreateText("./chips.json");
            await writeSream.WriteAsync(toWrite);

            await writeSream.FlushAsync();

            writeSream.Dispose();
#endif
        }
Ejemplo n.º 8
0
 public DiscordMessageWrapper(Discord.WebSocket.SocketMessage socketMessage)
 {
     DiscordSocketMessage = socketMessage;
     Author = new UserIdentity(socketMessage.Author);
 }
Ejemplo n.º 9
0
 internal void AddMessage(SocketMessage msg)
 => _messages?.Add(msg);
Ejemplo n.º 10
0
        private async Task HandleCommands(Discord.WebSocket.SocketMessage arg)
        {
            //Handle Commands right here
            var message = arg as SocketUserMessage;

            if (message == null)
            {
                return;
            }
            //Track where the command prefix ends and where the command begins
            int argPos = 0;

            //Check if author is a bot
            if (message.Author.IsBot)
            {
                return;
            }
            //Determine if the message is a command or a mention
            if (!(message.HasCharPrefix(CoreProgram.prefix, ref argPos) || message.HasMentionPrefix(_client.CurrentUser, ref argPos)))
            {
                //check if message is a private message
                if (message.Channel.Name == $"@{message.Author.Username}#{message.Author.DiscriminatorValue}")
                {
                    //Case private message
                    string text = "";
                    text = message.Attachments.Count > 0 ? $"[{message.Channel.Name}|{message.Author.Username}] whispered: {message.Content} 'FILE ATTACHED'" : $"[{message.Channel.Name}|{message.Author.Username}] whispered: {message.Content}";
                    //Send message to the logHandler
                    await _errorHandler._client_Log(new LogMessage(LogSeverity.Warning, "DM Chat", text));
                }
                else
                {
                    //Create SocketGuildUser
                    var chat_context = arg.Author as SocketGuildUser;
                    //Case public message
                    string text = "";
                    text = message.Attachments.Count > 0 ? $"[{chat_context.Guild.Name}|{message.Channel.Name}|{message.Author.Username}] wrote: {message.Content} 'FILE ATTACHED'" : $"[{chat_context.Guild.Name}|{message.Channel.Name}|{message.Author.Username}] wrote: {message.Content}";
                    //Check the type of the message
                    Databases.GuildUserDatabase.Counters messageType = Databases.GuildUserDatabase.CheckMessageType(message.Content);
                    //increase statistic counter for the user
                    Databases.GuildUserDatabase.IncreaseCount(chat_context, chat_context.Guild.Id, messageType);
                    //Send message to the logHandler
                    await _errorHandler._client_Log(new LogMessage(LogSeverity.Debug, "Discord Chat", text));

                    chat_context = null;
                }
                return;
            }
            ;

            //Create CommandContext
            var context = new SocketCommandContext(_client, message);

            /*
             * CHECK IF THE COMMAND IS ENABLE ON THE CONTEXT SERVER
             */
            //Execute the Command
            var result = await _commands.ExecuteAsync(context, argPos, _services);

            //If command is not private - increase counter
            if (!context.IsPrivate)
            {
                Databases.GuildUserDatabase.IncreaseCount(context.User, context.Guild.Id, Databases.GuildUserDatabase.Counters.Commands, context.Message.Content);
            }

            //Send commanmd to the logHandler
            await _errorHandler._client_Log(new LogMessage(LogSeverity.Verbose, "Discord Chat", $"[{message.Channel.Name}|{message.Author.Username}] Command: {message.Content}"));

            //If error occures - direct them to the ErrorHandler
            if (!result.IsSuccess)
            {
                await _errorHandler.HandleCommandError(context, result, "HandleCommands");
            }
        }