我刚刚开始修改discord.net来创建一个机器人。我现在有一个非常基本的机器人,当我键入命令文本时,它已经回复了我给定的响应。因此,如果我键入"Hello"
,它将回复"...world!"
然而,我想要的是,每当消息在任何时候包含某个单词时,机器人都会回复一个固定的响应。因此,如果用户键入"Well, hello there"
,即使命令字在消息的中间,它仍然会用"...world!"
进行回复。我想我可以用.Contains()
方法摆动它,但我有点卡住了。
private async Task OnMessageReceived(SocketMessage arg)
{
if (!(arg is SocketUserMessage message)) return;
if (message.Source != MessageSource.User) return;
string[] filters = { "hello" };
string content = message.Content;
bool contains = filters.Any(x => content.Split(" ").Any(y => y.Contains(x)));
if (contains)
{
var guild = _client.GetGuild((message.Channel as SocketGuildChannel).Guild.Id);
await message.Channel.SendMessageAsync($"{arg.Content} world!");
return;
}
}
这是可以从DiscordSocketClient获取的MessageReceived事件。将其放入CommandHandler中。