public async Task CommandResults(Task <IResult> resultTask, SocketCommandContextCustom context) { _global.TimeSpendOnLastMessage.Remove(context.User.Id, out var watch); var guildName = context.Guild == null ? "DM" : $"{context.Guild.Name}({context.Guild.Id})"; if (!resultTask.Result.IsSuccess) { _log.Warning( $"Command [{context.Message.Content}] by [{context.User}] [{guildName}] after {watch.Elapsed:m\\:ss\\.ffff}s.\n" + $"Reason: {resultTask.Result.ErrorReason}", "CommandHandling"); _log.Error(resultTask.Result.ErrorReason); if (!resultTask.Result.ErrorReason.Contains("Unknown command")) { await SendMessAsync($"Error! {resultTask.Result.ErrorReason}", context); } } else { _global.TotalCommandsIssued++; _log.Info( $"Command [{context.Message.Content}] by [{context.User}] [{guildName}] after {watch.Elapsed:m\\:ss\\.ffff}s.", "CommandHandling"); } await Task.CompletedTask; }
public async Task ReplyAsync(SocketCommandContextCustom context, [Remainder] string regularMess = null) { if (context.MessageContentForEdit == null) { var message = await context.Channel.SendMessageAsync($"{regularMess}"); var kek = new Global.CommandRam(context.User, context.Message, message); _global.CommandList.Add(kek); } else if (context.MessageContentForEdit == "edit") { foreach (var t in _global.CommandList) { if (t.UserSocketMsg.Id == context.Message.Id) { await t.BotSocketMsg.ModifyAsync(message => { message.Content = ""; message.Embed = null; if (regularMess != null) { message.Content = regularMess.ToString(); } }); } } } }
public async Task ReplyAsync(SocketCommandContextCustom context, EmbedBuilder embed) { if (context.MessageContentForEdit == null) { var message = await context.Channel.SendMessageAsync("", false, embed.Build()); var kek = new Global.CommandRam(context.User, context.Message, message); _global.CommandList.Add(kek); } else if (context.MessageContentForEdit == "edit") { foreach (var t in _global.CommandList) { if (t.UserSocketMsg.Id == context.Message.Id) { if (context.Message.Content.Contains("top")) { await t.BotSocketMsg.ModifyAsync(message => { message.Content = ""; message.Embed = null; // message.Embed = embed.Build(); }); } await t.BotSocketMsg.ModifyAsync(message => { message.Content = ""; message.Embed = null; message.Embed = embed.Build(); }); } } } }
public async Task _client_MessageUpdated(Cacheable <IMessage, ulong> messageBefore, SocketMessage messageAfter, ISocketMessageChannel arg3) { if (messageAfter.Author.IsBot) { return; } var after = messageAfter as IUserMessage; if (messageAfter.Content == null) { return; } if (messageAfter.Author is SocketGuildUser userCheck && userCheck.IsMuted) { return; } var before = messageBefore.HasValue ? messageBefore.Value : null; if (before == null) { return; } if (arg3 == null) { return; } if (before.Content == after?.Content) { return; } var list = _commandsInMemory.CommandList; foreach (var t in list) { if (t.MessageUserId != messageAfter.Id) { continue; } if (!(messageAfter is SocketUserMessage message)) { continue; } if (t.BotSocketMsg == null) { return; } _global.TotalCommandsChanged++; var account = _accounts.GetAccount(messageAfter.Author); var context = new SocketCommandContextCustom(_client, message, _commandsInMemory, "edit", account.MyLanguage); var argPos = 0; if (message.Channel is SocketDMChannel) { var resultTask = Task.FromResult(await _commands.ExecuteAsync( context, argPos, _services)); await resultTask.ContinueWith(async task => await CommandResults(task, context)); return; } var guild = _serverAccounts.GetServerAccount(context.Guild); if (message.HasStringPrefix(guild.Prefix, ref argPos) || message.HasStringPrefix(guild.Prefix + " ", ref argPos) || message.HasMentionPrefix(_client.CurrentUser, ref argPos) || message.HasStringPrefix(account.MyPrefix + " ", ref argPos) || message.HasStringPrefix(account.MyPrefix, ref argPos)) { var resultTask = Task.FromResult(await _commands.ExecuteAsync( context, argPos, _services)); await resultTask.ContinueWith(async task => await CommandResults(task, context)); } return; } await HandleCommandAsync(messageAfter); }
public async Task HandleCommandAsync(SocketMessage msg) { var message = msg as SocketUserMessage; if (message == null) { return; } var account = _accounts.GetAccount(msg.Author); var context = new SocketCommandContextCustom(_client, message, _commandsInMemory, null, account.MyLanguage); var argPos = 0; if (message.Author is SocketGuildUser userCheck && userCheck.IsMuted) { return; } if (msg.Author.IsBot) { return; } switch (message.Channel) { case SocketDMChannel _ when context.User.IsBot: return; case SocketDMChannel _: var resultTask = _commands.ExecuteAsync( context, argPos, _services); await resultTask.ContinueWith(async task => await CommandResults(task, context)); return; } var guild = _serverAccounts.GetServerAccount(context.Guild); if (message.HasStringPrefix(guild.Prefix, ref argPos) || message.HasStringPrefix(guild.Prefix + " ", ref argPos) || message.HasMentionPrefix(_client.CurrentUser, ref argPos) || message.HasStringPrefix(account.MyPrefix + " ", ref argPos) || message.HasStringPrefix(account.MyPrefix, ref argPos)) { var resultTask = _commands.ExecuteAsync( context, argPos, _services); await resultTask.ContinueWith(async task => await CommandResults(task, context)); } }
public async Task _client_MessageUpdated(Cacheable <IMessage, ulong> messageBefore, SocketMessage messageAfter, ISocketMessageChannel arg3) { if (messageAfter.Author.IsBot) { return; } var after = messageAfter as IUserMessage; if (messageAfter.Content == null) { return; } if (messageAfter.Author is SocketGuildUser userCheck && userCheck.IsMuted) { return; } var before = (messageBefore.HasValue ? messageBefore.Value : null) as IUserMessage; if (before == null) { return; } if (arg3 == null) { return; } if (before.Content == after?.Content) { return; } var list = _global.CommandList; foreach (var t in list) { if (t.UserSocketMsg.Id != messageAfter.Id) { continue; } if (!(messageAfter is SocketUserMessage message)) { continue; } if (t.BotSocketMsg == null) { return; } var account = _accounts.GetAccount(messageAfter.Author); var context = new SocketCommandContextCustom(_client, message, "edit", account.MyLanguage); var argPos = 0; if (message.Channel is SocketDMChannel) { var resultTask = await _commands.ExecuteAsync( context, argPos, _services); if (!resultTask.IsSuccess && !resultTask.ErrorReason.Contains("Unknown command")) { ReplyAsync(context, $"Booole! {resultTask.ErrorReason}"); } return; } var guild = _serverAccounts.GetServerAccount(context.Guild); if (message.HasStringPrefix(guild.Prefix, ref argPos) || message.HasStringPrefix(guild.Prefix + " ", ref argPos) || message.HasMentionPrefix(_client.CurrentUser, ref argPos) || message.HasStringPrefix(account.MyPrefix + " ", ref argPos) || message.HasStringPrefix(account.MyPrefix, ref argPos)) { var resultTaskk = await _commands.ExecuteAsync( context, argPos, _services); if (!resultTaskk.IsSuccess && !resultTaskk.ErrorReason.Contains("Unknown command")) { ReplyAsync(context, $"Booole! {resultTaskk.ErrorReason}"); } } return; } await HandleCommandAsync(messageAfter); }
public async Task HandleCommandAsync(SocketMessage msg) { var message = msg as SocketUserMessage; if (message == null) { return; } var account = _accounts.GetAccount(msg.Author); var context = new SocketCommandContextCustom(_client, message, null, account.MyLanguage); var argPos = 0; if (message.Author is SocketGuildUser userCheck && userCheck.IsMuted) { return; } if (msg.Author.IsBot) { return; } switch (message.Channel) { case SocketDMChannel _ when context.User.IsBot: return; case SocketDMChannel _: var resultTask = _commands.ExecuteAsync( context, argPos, _services); resultTask.ContinueWith(task => { if (!task.Result.IsSuccess) { Console.ForegroundColor = LogColor("red"); Console.WriteLine( $"{DateTime.Now.ToLongTimeString()} - DM: ERROR '{context.Channel}' {context.User}: {message} || {task.Result.ErrorReason}"); Console.ResetColor(); File.AppendAllText(LogFile, $"{DateTime.Now.ToLongTimeString()} - DM: ERROR '{context.Channel}' {context.User}: {message} || {task.Result.ErrorReason} \n"); if (!task.Result.ErrorReason.Contains("Unknown command")) { ReplyAsync(context, $"Booole! {task.Result.ErrorReason}"); } } else { Console.ForegroundColor = LogColor("white"); Console.WriteLine( $"{DateTime.Now.ToLongTimeString()} - DM: '{context.Channel}' {context.User}: {message}"); Console.ResetColor(); File.AppendAllText(LogFile, $"{DateTime.Now.ToLongTimeString()} - DM: '{context.Channel}' {context.User}: {message} \n"); } }); return; } var guild = _serverAccounts.GetServerAccount(context.Guild); if (message.HasStringPrefix(guild.Prefix, ref argPos) || message.HasStringPrefix(guild.Prefix + " ", ref argPos) || message.HasMentionPrefix(_client.CurrentUser, ref argPos) || message.HasStringPrefix(account.MyPrefix + " ", ref argPos) || message.HasStringPrefix(account.MyPrefix, ref argPos)) { var resultTask = _commands.ExecuteAsync( context, argPos, _services); resultTask.ContinueWith(task => { if (!task.Result.IsSuccess) { Console.ForegroundColor = LogColor("red"); Console.WriteLine( $"{DateTime.Now.ToLongTimeString()} - ERROR '{context.Channel}' {context.User}: {message} || {task.Result.ErrorReason}"); Console.ResetColor(); File.AppendAllText(LogFile, $"{DateTime.Now.ToLongTimeString()} - ERROR '{context.Channel}' {context.User}: {message} || {task.Result.ErrorReason} \n"); if (!task.Result.ErrorReason.Contains("Unknown command")) { ReplyAsync(context, $"Booole! {task.Result.ErrorReason}"); } } else { Console.ForegroundColor = LogColor("white"); Console.WriteLine( $"{DateTime.Now.ToLongTimeString()} - '{context.Channel}' {context.User}: {message}"); Console.ResetColor(); File.AppendAllText(LogFile, $"{DateTime.Now.ToLongTimeString()} - '{context.Channel}' {context.User}: {message} \n"); } }); } }