Здравствуй Toster! Не знаю ответят мне здесь или нет, но я попытаюсь задать здесь вопрос ибо на зарубежных форумах ответ на свой вопрос я не нашёл.
Я Занялся разработкой собственного Discord Бота на языке C#, используя пакеты:
Discord.Net и
Newtonsoft.Json. Я выбрал JSON в качестве хорошей альтернативы другим постоянным хранилищам данных. Создав заготовку для бота по разным учебникам, я решил попробовать его подключить к своему тестовому серверу в Discord. Запустив консольное приложение без отладки, бот по каким-то непонятным причинам пытался подключиться а позже отключался и так бесконечно продолжалось. (С библиотекой Discord.Net работаю впервые)
- - - - - - - - - - - - - - - - - - - - - - - - - -
Главный скрипт Program.csusing System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Discord.WebSocket;
using Discord;
namespace DiscordPetyaBot
{
class Program
{
DiscordSocketClient _client;
CommandHandler _handler;
static void Main(string[] args)
=> new Program().StartAsync().GetAwaiter().GetResult();
public async Task StartAsync()
{
if (Config.bot.token == "" || Config.bot.token == null) return;
_client = new DiscordSocketClient(new DiscordSocketConfig { LogLevel = LogSeverity.Verbose});
_client.Log += Log;
await _client.LoginAsync(TokenType.Bot, Config.bot.token);
await _client.StartAsync();
_handler = new CommandHandler();
await _handler.InitializeAsync(_client);
await Task.Delay(-1);
}
private async Task Log (LogMessage msg)
{
Console.WriteLine(msg.Message);
}
}
}
CommandHandler.csusing System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
using Discord.Commands;
using Discord.WebSocket;
namespace DiscordPetyaBot
{
class CommandHandler
{
DiscordSocketClient _client;
CommandService _service;
public async Task InitializeAsync(DiscordSocketClient client)
{
_client = client;
_service = new CommandService();
await _service.AddModulesAsync(Assembly.GetEntryAssembly());
_client.MessageReceived += HandleCommandAsync;
}
private async Task HandleCommandAsync(SocketMessage s)
{
var msg = s as SocketUserMessage;
if (msg == null) return;
var context = new SocketCommandContext(_client, msg);
int argPos = 0;
if (msg.HasStringPrefix(Config.bot.cmdPrefix, ref argPos) || msg.HasMentionPrefix(_client.CurrentUser, ref argPos))
{
var result = await _service.ExecuteAsync(context, argPos);
if (!result.IsSuccess && result.Error != CommandError.UnknownCommand)
{
Console.WriteLine(result.ErrorReason);
}
}
}
}
}
Что может быть не так? Использую свежие версии библиотек, токен бота 100% верен...
Может я не один сталкивался с этой проблемой?)
Заранее Спасибо!