Exemplo n.º 1
0
        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();
                        });
                    }
                }
            }
        }
Exemplo n.º 4
0
        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);
        }
Exemplo n.º 5
0
        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");
                    }
                });
            }
        }