首页 > 解决方案 > Discord.NET C# 更改 SocketMessage 的内容

问题描述

因此,每当服务器上的任何人使用我的机器人向任何文本通道发送消息时,我都会收听该事件。我想检测像“fuck”这样的脏话并将其更改为“f*ck”。我无法正常仅用反射替换我的消息,但它没有帮助,因为它仅在 SocketMessage 的实例中替换它,但它没有更改服务器上的消息。

有什么解决办法吗?

框架:4.6 Discord.NET:1.0.2

代码:

private async Task MsgRec(SocketMessage e)
{
    try
    {
        if (e.Content.Contains("fuck"))
        {
            foreach(PropertyInfo info in typeof(SocketMessage).GetProperties())
            {
                if (info.Name == "Content")
                {
                    info.SetValue(e,e.Content.Replace("fuck", "f*ck"));
                }
            }
        }
    }
    catch (Exception ex)
    {
        await e.Author.SendMessageAsync(ex.StackTrace);
    }
}

更新我也试过这个没有任何成功:

var rMessage = (RestUserMessage) await e.Channel.GetMessageAsync(e.Id);
await rMessage.ModifyAsync(msg => msg.Content = e.Content.Replace("fuck", "f*ck"));

标签: c#reflectionmessageserversocketdiscord.net

解决方案


Discord 与其他聊天程序一样,不允许您更改用户的消息。您无法审查用户写的内容,您只能删除整条消息。


推荐阅读