在没有机器人的情况下检测不一致的提及?

时间:2018-03-14 00:36:47

标签: c# windows hook discord

我目前正在使用C#进行编码,以使我的razer键盘对通知和其他内容作出反应。这是我第一次使用C#,我想知道如何检测不和谐通知? Selfbots再次成为Discord规则,其他机器人不是一种选择。一个建议是我使用了一个Windows钩子,但是在搜索之后,似乎大多数人都说你不能在C#中轻松做到这一点。所以我想知道是否有更好的想法,如果没有,我将如何做Windows钩子?

编辑:这是一个WPF应用程序。

1 个答案:

答案 0 :(得分:0)

在您的messageRecieved处理程序中,您只需添加几行代码来检查您帐户(客户端)的提及。

var mentionedUser = message.MentionedUsers;
        //Using a loop
        foreach(var user in mentionedUser) {
            if(user == client.CurrentUser) {
                //Do something
            }
        }

        //Or you could do it...
        if(message.Content.Contains("<@YOURID>")) {
            //Do something
        }

如果您还没有messageRecieved Handler,那么它是来自DiscordSocketClient对象的属性。
您可以查看有关为客户端here设置事件处理程序的文档教程。

或者,如果您只想在提及仅位于邮件的前面(或特定位置)时触发代码,则可以将SocketMessage转换为SocketUserMessage,然后使用HasMentionPrefix()中的SocketUserMessage方法 (类似于文档设置CommandModule的方式)