В настоящее время у меня работает бот Discord, но он не останется в системе, если я не добавлю await Task.Delay(-1)
к методу, который я использую для входа. Я подозреваю, что это вызывает у меня некоторые проблемы в последующих частях моего кода.
Вот как я подключаюсь:
public override async Task ConnectToClientAsync()
{
await this._client.LoginAsync(TokenType.Bot, this.Token);
await this._client.StartAsync();
await Task.Delay(-1);
}
Как мне сохранить моего бота в сети, не прибегая к помощи к использованию Task.Delay(-1)
? Он просто входит в систему и после успешного завершения останавливает программу (поскольку она не остается в системе без этой задержки).
Main
class Program
{
static async Task Main(string[] args)
{
var newBot = new WelcomeBot(674094599903641628);
await newBot.LaunchBot();
}
}
WelcomeBot
public class WelcomeBot : BasicBot, IMessageWriter, IMessageReader
{
private ulong _channelId;
public WelcomeBot(ulong channelId) : base()
{
this._client = new DiscordSocketClient();
this._channelId = channelId;
ConfigureBotFunctionality();
}
private void ConfigureBotFunctionality()
{
Interact_UserEntryAndExit();
}
private void Interact_UserEntryAndExit()
{
this._client.UserJoined += AnnounceUserJoiningAsync;
this._client.UserLeft += AnnounceUserLeavingAsync;
this._client.Connected += OnConnectAnnouncementAsync;
}
public async Task LaunchBot()
{
await ConnectToClientAsync();
}
public override async Task ConnectToClientAsync()
{
await this._client.LoginAsync(TokenType.Bot, this.Token);
await this._client.StartAsync();
await Task.Delay(-1);
}
private async Task OnConnectAnnouncementAsync()
{
// ..
}
private async Task AnnounceUserLeavingAsync(SocketGuildUser leavingUser)
{
//..
}
private async Task AnnounceUserJoiningAsync(SocketGuildUser joinedUser)
{
//..
}
// Other functions.
}