Пытаюсь добавить своему боту команды активного приложения

Я пытаюсь добавить своему боту команды активного приложения, но что только я не пробовал, не получалось. Подскажите как это реализовать и если есть возможность расскажите за что отвечают разные части кода?

using System;
using System.Text.RegularExpressions;
using Discord;
using Discord.Commands;
using Discord.WebSocket;
using Discord.Commands;
using Discord;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Input;
using System.Reflection;

namespace DS_Bot_3
{
    public class Progarm
    {
        DiscordSocketClient client;
        private object socketGuildUser;
        private object _services;

        public object Context { get; private set; }

        static void Main(string[] args)
        {
            new Progarm().MainAsync().GetAwaiter().GetResult();
        }


        private async Task MainAsync()
        {
            var config = new DiscordSocketConfig
            {
                GatewayIntents = GatewayIntents.All,
            };
            var client = new DiscordSocketClient(config);



            client.MessageReceived += CommandsHandler;
            client.Log += Log;

            var token = "TOKEN";

            await client.LoginAsync(TokenType.Bot, token);
            await client.StartAsync();
            Console.WriteLine($"Bot Anton почти готов!");
            Console.ReadLine();

        }
        private Task Log(LogMessage messege)
        {

            Console.WriteLine(messege.ToString());
            return Task.CompletedTask;

        }

        public class CommandHandler 
        {
            private readonly IServiceProvider _provider;
            private readonly DiscordSocketClient _client;
            private readonly CommandService _service;
           

            public CommandHandler(IServiceProvider provider, DiscordSocketClient client, CommandService serviceg)
            {
                _provider = provider;
                _client = client;
                
            }

           

            private async Task OnCommandExecuted(Optional<CommandInfo> commandInfo, ICommandContext commandContext, IResult result)
            {
                if (result.IsSuccess)
                {
                    return;
                }

                await commandContext.Channel.SendMessageAsync(result.ErrorReason);
            }

            private async Task OnMessageRecevied(SocketMessage socketMsg)
            {
                if (!(socketMsg is SocketUserMessage message)) return;
                if (message.Source != MessageSource.User) return;

                var argPos = 0;
                

                var context = new SocketCommandContext(_client, message);
                await _service.ExecuteAsync(context, argPos, _provider);
            }
        }
        private Task CommandsHandler(SocketMessage message)
        {

                switch (message.Content)
                {
                case "/Hi":
                        message.Channel.SendMessageAsync($"Hi, {message.Author.Username}");
                        break;
                case "/Random":
                        Random rnd = new Random();
                        int rnd1 = rnd.Next(1, 100);
                        message.Channel.SendMessageAsync($"Your number:{rnd1}");
                        break;
                case "/BPicture":
                        message.Channel.SendMessageAsync($"{message.Author.Username} one second");
                        message.Channel.SendMessageAsync("https://gas-kvas.com/uploads/posts/2022-10/1666949264_24-gas-kvas-com-p-effektnie-foto-prirodi-26.jpg");
                        break;
                case "/test":
                    message.Channel.SendMessageAsync("WOW! Vse puchkom!");
                    break;
                case "/Spam":
                    while (true)
                    {
                        message.Channel.SendMessageAsync("Fuck");
                    }
                    
                    break;
                }
            return Task.CompletedTask;

        }
    }
}

Ответы (0 шт):