.NET 上的 Discord 机器人,对特定单词做出反应

Discord bot on .NET, reacting on specific words

问题是我想创建一个机器人,它会对人们在不和谐频道聊天中发送的特定单词做出反应。

    private Task CowMooeing(SocketMessage msg)
    {
        string[] mooes = {"moo", "moooooo", "moooooooooo", "mooooooooooo"};

        foreach (string moo in mooes)
        {
            if (msg.Content.Contains(moo))
                msg.Channel.SendMessageAsync("hi there, you little COWard!");
        }
    }

但是。如果有人在聊天中发送“moo, moooo, moooo” - 机器人会对此做出多次反应。

我尝试将 msg.Content.Contains 替换为 msg.Content.Equals()。但在那种情况下,如果有人添加了额外的文本,如:我已经说过“mooo!”,它就不会起作用。 - 机器人不会对此做出反应。所以我真的坚持这一点,我发现解决这个问题的唯一方法是多次复制 mooes 数组 if mooes[0], if mooes[1] 等。但这不是最好的方法。

使用正则表达式时,我遇到了无法使用 IsMatch 或 Match with msg.Content =( 请帮我一点点

使用下面的 Linq Any 方法怎么样?这将只发送一条消息,因为如果找到任何消息,Any 将 return 为真。

private Task CowMooeing(SocketMessage msg)
{
    string[] mooes = {"moo", "moooooo", "moooooooooo", "mooooooooooo"};
    if(mooes.Any(x => msg.Content.Contains(x))) {
         msg.Channel.SendMessageAsync("hi there, you little COWard!");
    }
}

我还要说看看 regex 正则表达式,它们对像这样的东西很有帮助