Пытаюсь добавить своему боту команды активного приложения
Я пытаюсь добавить своему боту команды активного приложения, но что только я не пробовал, не получалось. Подскажите как это реализовать и если есть возможность расскажите за что отвечают разные части кода?
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;
}
}
}