【发布时间】:2018-02-09 19:52:16
【问题描述】:
我尝试了从 discord.net 的 github 页面复制的这段代码,这个代码运行良好:
using Discord;
using Discord.WebSocket;
using System;
using System.Threading.Tasks;
namespace Adivisor
{
public class Program
{
private DiscordSocketClient _client;
public static void Main(string[] args) => new Program().MainAsync().GetAwaiter().GetResult();
public async Task MainAsync()
{
_client = new DiscordSocketClient();
_client.Log += Log;
_client.MessageReceived += MessageReceived;
string token = ":P";
await _client.LoginAsync(TokenType.Bot, token);
await _client.StartAsync();
await Task.Delay(-1);
}
private async Task MessageReceived(SocketMessage message)
{
if (message.Content == "!hi")
{
await message.Channel.SendMessageAsync("Hello!");
}
}
private Task Log(LogMessage msg)
{
Console.WriteLine(msg.ToString());
return Task.CompletedTask;
}
}
}
在我对 MessageReceived 进行了一些编辑后,现在它看起来像这样:
private async Task MessageReceived(SocketMessage message)
{
await message.Channel.SendMessageAsync("Hello!");
}
实际上我只是删除了 if,但有很大的不同,似乎没有 if MessageReceived 被永远调用......
【问题讨论】:
-
那是因为“你好!”触发
MessageReceived,从而导致无限循环。 -
谢谢现在一切都说得通了:D
-
如果没记错的话,我应该从下面的列表中选择一个答案,但你没有回答而是发表评论,所以......可以这样留下问题吗?
-
是的,没关系。
标签: c# discord discord.net