Esempio n. 1
0
 /// <summary>
 /// Initializes the bot object, connects, and runs the active loop.
 /// </summary>
 public void InitAndRun(string[] args)
 {
     DiscordBotBaseHelper.StartBotHandler(args, new DiscordBotConfig()
     {
         CommandPrefix = DenizenMetaBotConstants.COMMAND_PREFIX,
         Initialize    = (bot) =>
         {
             PopulateFromConfig(bot.ConfigFile);
             DefaultCommands(bot);
             bot.Client.Ready += () =>
             {
                 bot.Client.SetGameAsync("Type !help").Wait();
                 return(Task.CompletedTask);
             };
         },
         UnknownCommandHandler = (command, args, message) =>
         {
             if (message.MentionedUserIds.Contains(DiscordBotBaseHelper.CurrentBot.Client.CurrentUser.Id))
             {
                 message.Channel.SendMessageAsync(embed: UserCommands.GetErrorMessageEmbed("Unknown Command", "Unknown command. Consider the __**help**__ command?")).Wait();
             }
             else if (args.Count == 0 && InformationalData.ContainsKey(command.ToLowerFast()))
             {
                 InfoCmds.CMD_Info(new string[] { command.ToLowerFast() }, message);
             }
         },
         ShouldPayAttentionToMessage = (message) =>
         {
             return(message.Channel is IGuildChannel);
         }
     });
 }
Esempio n. 2
0
        /// <summary>
        /// Bot command response handler.
        /// </summary>
        public void Respond(SocketMessage message, bool outputUnknowns)
        {
            string messageText = message.Content;

            if (messageText.StartsWith(Constants.COMMAND_PREFIX))
            {
                messageText = messageText.Substring(Constants.COMMAND_PREFIX.Length);
            }
            string[]      messageDataSplit = messageText.Split(' ');
            StringBuilder resultBuilder    = new StringBuilder(messageText.Length);
            List <string> cmds             = new List <string>();

            for (int i = 0; i < messageDataSplit.Length; i++)
            {
                if (messageDataSplit[i].Contains("<@") && messageDataSplit[i].Contains(">"))
                {
                    continue;
                }
                resultBuilder.Append(messageDataSplit[i]).Append(" ");
                if (messageDataSplit[i].Length > 0)
                {
                    cmds.Add(messageDataSplit[i]);
                }
            }
            if (cmds.Count == 0)
            {
                Console.WriteLine("Empty input, ignoring: " + message.Author.Username);
                return;
            }
            string fullMessageCleaned = resultBuilder.ToString();

            Console.WriteLine("Found input from: (" + message.Author.Username + "), in channel: " + message.Channel.Name + ": " + fullMessageCleaned);
            string commandNameLowered = cmds[0].ToLowerInvariant();

            cmds.RemoveAt(0);
            if (ChatCommands.TryGetValue(commandNameLowered, out Action <string[], SocketMessage> acto))
            {
                acto.Invoke(cmds.ToArray(), message);
            }
            else if (outputUnknowns)
            {
                message.Channel.SendMessageAsync(embed: UserCommands.GetErrorMessageEmbed("Unknown Command", "Unknown command. Consider the __**help**__ command?")).Wait();
            }
            else if (cmds.Count == 0 && InformationalData.ContainsKey(commandNameLowered))
            {
                InfoCmds.CMD_Info(new string[] { commandNameLowered }, message);
            }
        }