📅  最后修改于: 2023-12-03 14:52:42.672000             🧑  作者: Mango
Discord Bot 是一个非常流行的聊天机器人,在 C# 中编写 Discord Bot 可以非常方便的进行开发。然而,收集用户的输入是开发 Discord Bot 的一个关键方面。在这篇文章中,我们将介绍如何在 Discord Bot C# 中收集用户的输入。
在开始之前,让我们快速回顾一下 Discord Bot 的基本结构。在 C# 中编写 Discord Bot 的主要部分如下:
using Discord;
//...
public class MyBot
{
private DiscordClient _client;
public MyBot()
{
_client = new DiscordClient();
_client.MessageReceived += OnMessageReceived;
_client.Connect("<bot-token>", TokenType.Bot);
}
private void OnMessageReceived(object sender, MessageEventArgs e)
{
// Handle message
}
}
这里我们创建了一个 MyBot
类,内部有一个 DiscordClient
变量 _client
。在构造函数中初始化了 _client
,并监听了 _client.MessageReceived
事件。当有消息发送到 Discord Bot 时,该事件将被触发,我们将在 OnMessageReceived
函数中处理消息。
在 OnMessageReceived
函数中,我们可以获得用户的输入。用户的输入是包含在消息对象(Message
)中的。首先,我们需要检查消息是否来自于一个真实的用户:
private async void OnMessageReceived(object sender, MessageEventArgs e)
{
if (e.Message.IsAuthor) return; // Ignore messages sent by our bot
if (e.Message.User.IsBot) return; // Ignore messages sent by other bots
// Handle message
}
在这个样例中,我们忽略了所有来自于我们的机器人以及其他机器人的消息。接下来,我们需要检查消息是否为用户所期望的:
private async void OnMessageReceived(object sender, MessageEventArgs e)
{
if (e.Message.IsAuthor) return; // Ignore messages sent by our bot
if (e.Message.User.IsBot) return; // Ignore messages sent by other bots
if (!e.Message.Content.StartsWith("!hello")) return; // Ignore messages that do not start with '!hello'
// Handle message
}
在这个样例中,我们只处理以'!hello'开头的消息。接下来,我们要提取用户输入的数据:
private async void OnMessageReceived(object sender, MessageEventArgs e)
{
if (e.Message.IsAuthor) return; // Ignore messages sent by our bot
if (e.Message.User.IsBot) return; // Ignore messages sent by other bots
if (!e.Message.Content.StartsWith("!hello")) return; // Ignore messages that do not start with '!hello'
string input = e.Message.Content.Split(' ')[1]; // Extract the input from the message
// Handle message
}
在这个样例中,我们使用空格切分消息,并将第2部分作为输入。请注意,这里我们只是提取了输入,但还没有处理它。最后,我们需要回复用户:
private async void OnMessageReceived(object sender, MessageEventArgs e)
{
if (e.Message.IsAuthor) return; // Ignore messages sent by our bot
if (e.Message.User.IsBot) return; // Ignore messages sent by other bots
if (!e.Message.Content.StartsWith("!hello")) return; // Ignore messages that do not start with '!hello'
string input = e.Message.Content.Split(' ')[1]; // Extract the input from the message
await e.Channel.SendMessage($"Hello, {input}!"); // Reply to the user with the input
// Handle message
}
在这个样例中,我们使用 e.Channel.SendMessage
函数向用户发送回复。我们在消息字符串中使用 {}
来插入输入字符串。
在这篇文章中,我们介绍了如何在 Discord Bot C# 中收集用户的输入。我们涵盖了从消息对象中提取输入,以及如何回复用户。希望这篇文章能够帮助你更好地编写 Discord Bot!