/// <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); } }); }
/// <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); } }