public async Task <RuntimeResult> HelpCmd() { List <ModuleInfo> modules = _commands.Modules.OrderBy(x => x.Name).ToList(); string prefix = Context.Guild != null?_guildSettings.GetOrAddGuildSettings(Context.Guild.Id).Prefix ?? _config.Prefix : _config.Prefix; try { foreach (ModuleInfo module in modules) { await Context.User.SendMessageAsync(embed : new CommandsEmbed(module, prefix).Build()); } } catch (HttpException e) { switch (e.DiscordCode) { case 50007: return(new DirectMessageError()); default: throw; } } return(new SuccessResult()); }
public async Task HelpCmd() { System.Collections.Generic.List <ModuleInfo> modules = _commands.Modules.OrderBy(x => x.Name).ToList(); foreach (ModuleInfo module in modules) { EmbedBuilder embedBuilder = new EmbedBuilder(); embedBuilder.WithTitle(module.Name).WithDescription(module.Summary ?? "No summary"); System.Collections.Generic.IReadOnlyList <CommandInfo> commands = module.Commands; foreach (CommandInfo command in commands) { string title = $"{string.Join(" | ", command.Aliases)}"; if (command.Summary != null) { title += $" | {command.Summary}"; } string text = $"{(Context.Guild != null ? _guildSettings.GetOrAddGuildSettings(Context.Guild.Id).Prefix ?? _config.Prefix : _config.Prefix)}{command.Name}"; foreach (ParameterInfo param in command.Parameters) { text += $" | {param.Name}"; if (param.Summary != null) { text += $": {param.Summary}"; } } text = Format.Code('\n' + text); embedBuilder.AddField(title, text); } await ReplyAsync(embed : embedBuilder.Build()); } }
public async Task MessageReceivedAsync(SocketMessage rawMessage) { // Ignore system messages, or messages from other bots if (!(rawMessage is SocketUserMessage message)) { return; } if (message.Source != MessageSource.User) { return; } // This value holds the offset where the prefix ends int argPos = 0; // Perform prefix check. You may want to replace this with // (!message.HasCharPrefix('!', ref argPos)) // for a more traditional command format like !help. ulong?guildId = (message.Channel as SocketGuildChannel)?.Guild?.Id; if (!(message.HasStringPrefix(guildId != null ? _guildSettings.GetOrAddGuildSettings(guildId.Value).Prefix ?? _config.Prefix : _config.Prefix, ref argPos) || message.HasMentionPrefix(_discord.CurrentUser, ref argPos))) { return; } SocketCommandContext context = new SocketCommandContext(_discord, message); // Perform the execution of the command. In this method, // the command service will perform precondition and parsing check // then execute the command if one is matched. await _commands.ExecuteAsync(context, argPos, _services); // Note that normally a result will be returned by this format, but here // we will handle the result in CommandExecutedAsync, }
public async Task SetPrefixCmd([Summary("If not specified, restores default prefix")] string prefix = null) { if (!string.IsNullOrEmpty(prefix) && prefix.Length > 32) { await ReplyAsync("Prefix can't be longer than 32 characters!"); // TODO: Use Post-Execution handler return; } GuildSettings settings = _guildSettingsCache.GetOrAddGuildSettings(Context.Guild.Id); settings.Prefix = prefix; _guildSettingsCache.UpsertGuildSettings(settings); await ReplyAsync($"Current prefix: {prefix ?? _config.Prefix}"); }
public async Task <RuntimeResult> SetPrefixCmd([Summary("If not specified, restores default prefix")] string prefix = null) { if (!string.IsNullOrEmpty(prefix) && prefix.Length > 32) { return(new PrefixLengthError()); } GuildSettings settings = _guildSettingsCache.GetOrAddGuildSettings(Context.Guild.Id); settings.Prefix = prefix; _guildSettingsCache.UpsertGuildSettings(settings); await ReplyAsync($"Current prefix: {prefix ?? _config.Prefix}"); return(new SuccessResult()); }