public async Task HandleCommandsAsync(SocketMessage msg) { if (msg.Author.IsWebhook || msg.Author.Id == Socket.CurrentUser.Id) { return; } if (msg is SocketUserMessage message) { var pos = 0; var prefix = (message.Channel is ITextChannel) ? Configuration.Guilds.GetGuild( (message.Channel as ITextChannel).GuildId).Prefix : Prefix; if (message.HasPrefix(prefix, Socket.CurrentUser, ref pos)) { var context = new CWBContext(this, message); var result = await Commands.ExecuteAsync(context, message.Content.Substring(pos), Services); if (!result.IsSuccess) { await HandleCommandError(result); } } } }
public static string Format(string command, CWBContext context, params string[] parameters) { var cmd = VariableFormatting.FormatDateTime(context.ConfigGuild, command); cmd = cmd.Replace("{{.Prefix}}", context.Prefix); foreach (Match match in Arguments.Matches(cmd)) { cmd = cmd.Replace(match.Value, parameters[int.Parse(match.Groups[0].Value)]); } return(cmd); }
public static async Task <string> Respond(string command, CWBContext context) { if (command.ContainsIgnoreCase("{{.Silent}}")) { return(command.Replace("{{.Silent}}", "")); } else if (command.ContainsIgnoreCase("{{.DM}}")) { command = command.Replace("{{.DM}}", ""); await context.User.SendMessageAsync(command); } else if (command.ContainsIgnoreCase(".DM")) { } return(command); }
public async Task HandleMessagesAsync(SocketMessage msg) { if (msg is SocketUserMessage message) { var _ = 0; var prefix = (message.Channel is ITextChannel) ? Configuration.Guilds.GetGuild( (message.Channel as ITextChannel).GuildId).Prefix : Prefix; if (message.HasPrefix(prefix, Socket.CurrentUser, ref _)) { return; } var context = new CWBContext(this, message); foreach (var type in IListeners) { var listener = DependencyInjection.CreateInjected <IListener>(type, Services, context); if (listener.GetRunMode() == RunMode.Async) { await Task.Run(async() => { try { await listener.ExecuteAsync(); } catch (Exception e) { await HandleCommandError(ExecuteResult.FromError(e)); } }); } else { try { await listener.ExecuteAsync(); } catch (Exception e) { await HandleCommandError(ExecuteResult.FromError(e)); } } } } }
public static async Task <string> FormatMessage(CWBContext context, string str) { var value = str; if (value.ContainsIgnoreCase(".User")) { value = FormatUser(context.User, value); } if (value.ContainsIgnoreCase(".Guild")) { value = await FormatGuild(context.Guild, value); } if (value.ContainsIgnoreCase(".Guild.Owner")) { value = FormatOwner(await context.Guild.GetOwnerAsync(), value); } if (value.ContainsIgnoreCase(".Member")) { value = FormatMember(context.GuildUser, value); } if (value.ContainsIgnoreCase(".Channel")) { value = FormatChannel(context.Channel, value); } if (value.ContainsIgnoreCase(".TextChannel")) { value = FormatTextChannel(context.TextChannel, await context.Guild.GetUserAsync(context.Bot.Socket.CurrentUser.Id), value); } return(value); }