public CommandHandler(DiscordSocketClient client, CommandService cmdService, IServiceProvider serviceProvider, GlobalGuildAccounts globalGuildAccounts, GlobalUserAccounts globalUserAccounts, RoleByPhraseProvider roleByPhraseProvider)
 {
     _client               = client;
     _cmdService           = cmdService;
     _serviceProvider      = serviceProvider;
     _globalGuildAccounts  = globalGuildAccounts;
     _globalUserAccounts   = globalUserAccounts;
     _roleByPhraseProvider = roleByPhraseProvider;
 }
        public async Task HandleCommandAsync(SocketMessage s)
        {
            if (!(s is SocketUserMessage msg))
            {
                return;
            }
            if (msg.Channel is SocketDMChannel)
            {
                return;
            }
            if (msg.Author.IsBot)
            {
                return;
            }
            var context = new MiunieCommandContext(_client, msg);

            await RoleByPhraseProvider.EvaluateMessage(
                context.Guild,
                context.Message.Content,
                (SocketGuildUser)context.User
                );

            var argPos = 0;

            if (msg.HasMentionPrefix(_client.CurrentUser, ref argPos) || CheckPrefix(ref argPos, context))
            {
                var cmdSearchResult = _cmdService.Search(context, argPos);
                if (!cmdSearchResult.IsSuccess)
                {
                    await context.Channel.SendMessageAsync("Nie czaję... :sweat_smile: Sprawdź składnię i upewnij się, że taka komenda napewno istnieje :kissing_heart::stuck_out_tongue_closed_eyes:");

                    return;
                }

                context.RegisterCommandUsage();

                context.Message.DeleteAsync();

                var executionTask = _cmdService.ExecuteAsync(context, argPos, _serviceProvider);


                #pragma warning disable CS4014 // Because this call is not awaited, execution of the current method continues before the call is completed
                executionTask.ContinueWith(task =>
                {
                    if (task.Result.IsSuccess || task.Result.Error == CommandError.UnknownCommand)
                    {
                        return;
                    }
                    const string errTemplate = ":warning: Błąd :warning: {0}**!**\nPowód: {1}.";
                    var errMessage           = string.Format(errTemplate, context.User.Mention, task.Result.ErrorReason);
                    context.Channel.SendMessageAsync(errMessage);
                    Console.WriteLine(context.Message.Timestamp + " | " + context.Message.Author + " | " + context.Guild + " ==> " + context.Channel + " | BŁĄD: " + task.Result.ErrorReason);
                });
                #pragma warning restore CS4014 // Because this call is not awaited, execution of the current method continues before the call is completed
            }
        }
        public async Task HandleCommandAsync(SocketMessage s)
        {
            if (!(s is SocketUserMessage msg))
            {
                return;
            }
            if (msg.Channel is SocketDMChannel)
            {
                return;
            }
            if (msg.Author.IsBot)
            {
                return;
            }
            var context = new MiunieCommandContext(_client, msg);

            await RoleByPhraseProvider.EvaluateMessage(
                context.Guild,
                context.Message.Content,
                (SocketGuildUser)context.User
                );

            var argPos = 0;

            if (msg.HasMentionPrefix(_client.CurrentUser, ref argPos) || CheckPrefix(ref argPos, context))
            {
                var cmdSearchResult = _cmdService.Search(context, argPos);
                if (!cmdSearchResult.IsSuccess)
                {
                    return;
                }

                context.RegisterCommandUsage();

                var executionTask = _cmdService.ExecuteAsync(context, argPos, _serviceProvider);

                #pragma warning disable CS4014 // Because this call is not awaited, execution of the current method continues before the call is completed
                executionTask.ContinueWith(task =>
                {
                    if (task.Result.IsSuccess || task.Result.Error == CommandError.UnknownCommand)
                    {
                        return;
                    }
                    const string errTemplate = "{0}, Error: {1}.";
                    var errMessage           = string.Format(errTemplate, context.User.Mention, task.Result.ErrorReason);
                    context.Channel.SendMessageAsync(errMessage);
                });
                #pragma warning restore CS4014 // Because this call is not awaited, execution of the current method continues before the call is completed
            }
        }
        public async Task RbpAddRelation(int phraseIndex, int roleIndex)
        {
            var result = RoleByPhraseProvider.CreateRelation(Context.Guild, phraseIndex, roleIndex);

            if (result == RoleByPhraseProvider.RelationCreationResult.Success)
            {
                await RbpStatus();
            }
            else
            {
                await ReplyAsync("That's just what I need, great! Terrific!, something went wrong...");

                Console.WriteLine(result.ToString());
            }
        }
        public async Task RbpAddRole(IRole role)
        {
            var result = RoleByPhraseProvider.AddRole(Context.Guild, role);

            if (result == RoleByPhraseProvider.RoleByPhraseOperationResult.Success)
            {
                await RbpStatus();
            }
            else
            {
                await ReplyAsync("Well, this was a total waste of time, something went wrong...");

                Console.WriteLine(result.ToString());
            }
        }
        public async Task RbpAddPhrase([Remainder] string phrase)
        {
            var result = RoleByPhraseProvider.AddPhrase(Context.Guild, phrase);

            if (result == RoleByPhraseProvider.RoleByPhraseOperationResult.Success)
            {
                await RbpStatus();
            }
            else
            {
                await ReplyAsync("I work 24 hours a day so something went wrong...");

                Console.WriteLine(result.ToString());
            }
        }
Exemple #7
0
        public async Task RbpAddRelation(int phraseIndex, int roleIndex)
        {
            var result = RoleByPhraseProvider.CreateRelation(Context.Guild, phraseIndex, roleIndex);

            if (result == RoleByPhraseProvider.RelationCreationResult.Success)
            {
                await RbpStatus();
            }
            else
            {
                await ReplyAsync("Aha... więc nooo ten... nie działa.");

                Console.WriteLine(result.ToString());
            }
        }
Exemple #8
0
        public async Task RbpAddRole(IRole role)
        {
            var result = RoleByPhraseProvider.AddRole(Context.Guild, role);

            if (result == RoleByPhraseProvider.RoleByPhraseOperationResult.Success)
            {
                await RbpStatus();
            }
            else
            {
                await ReplyAsync("Łups... coś zyebauem... xd");

                Console.WriteLine(result.ToString());
            }
        }
Exemple #9
0
        public async Task RbpAddPhrase([Remainder] string phrase)
        {
            var result = RoleByPhraseProvider.AddPhrase(Context.Guild, phrase);

            if (result == RoleByPhraseProvider.RoleByPhraseOperationResult.Success)
            {
                await RbpStatus();
            }
            else
            {
                await ReplyAsync("Pracuję 24/h... to nie mogło się udać...");

                Console.WriteLine(result.ToString());
            }
        }
 public async Task RbpRemoveRelation(int phraseIndex, int roleIndex)
 {
     RoleByPhraseProvider.RemoveRelation(Context.Guild, phraseIndex, roleIndex);
     await RbpStatus();
 }
 public async Task RbpRemoveRole(int roleIndex)
 {
     RoleByPhraseProvider.RemoveRole(Context.Guild, roleIndex);
     await RbpStatus();
 }
 public RoleByPhrase(GlobalGuildAccounts globalGuildAccounts, RoleByPhraseProvider roleByPhraseProvider)
 {
     _globalGuildAccounts  = globalGuildAccounts;
     _roleByPhraseProvider = roleByPhraseProvider;
 }