Discord.NET C#更改SocketMessage的内容

Discord.NET C#更改SocketMessage的内容,c#,reflection,message,serversocket,discord.net,C#,Reflection,Message,Serversocket,Discord.net,因此,每当服务器上的任何人使用我的bot向任何文本频道发送消息时,我都会收听该事件。我想检测像“操”这样的脏话,然后把它改成“f*ck”。 我无法正常地仅用反射替换我的消息,但它没有帮助,因为它只在SocketMessage实例中替换了它,但它没有更改服务器上的消息 有什么解决办法吗 框架:4.6 Discord.NET:1.0.2 代码: 更新我也尝试过,但没有成功: var rMessage = (RestUserMessage) await e.Channel.GetMessageAsyn

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

有什么解决办法吗

框架:4.6 Discord.NET:1.0.2

代码:

更新我也尝试过,但没有成功:

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

也许你可以试试这样的

private async Task MsgRec(SocketMessage e)
{
    var msg = e as SocketUserMessage;
    if (msg == null) return;
    if (msg.Content.Contains("fuck"))
    {
        var newMsg = msg.Content.Replace("fuck", "f*ck");
        await Context.Channel.SendMessageAsync(newMsg);
    }
}

也许你可以试试这样的

private async Task MsgRec(SocketMessage e)
{
    var msg = e as SocketUserMessage;
    if (msg == null) return;
    if (msg.Content.Contains("fuck"))
    {
        var newMsg = msg.Content.Replace("fuck", "f*ck");
        await Context.Channel.SendMessageAsync(newMsg);
    }
}

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

Discord和其他聊天程序一样,不允许你更改用户的信息。你不能审查用户写的内容,你只能删除整封邮件。

可能是因为你删除了邮件,然后又修改了吗?确保你的机器人也有适当的访问权限。我没有删除它,我已经删除了该行。仍然无法工作。我认为除了上下文用户之外,任何人都无法编辑他们自己的消息。这可能是因为您删除了消息,然后又对其进行了修改吗?确保你的机器人也有适当的访问权限。我没有删除它,我已经删除了该行。仍然不工作。我认为除了上下文用户之外,任何人都不能编辑他们自己的消息。好主意,但在这里消息的发送者将是机器人,对吗?我希望用户是发件人。现在唯一有效的一行是:wait rMessage.ModifyAsync(msg=>msg.Content=e.Content.Replace(“fuck”,“f*ck”);除最初发送消息的用户外,任何用户都不能修改其他用户消息的内容。您可以删除他们的邮件(授予权限),但不能编辑。您可以删除用户的邮件,机器人可以用替换的邮件写入“就像JanMer写的:f*ck好主意,但在这里,消息的发送者将是机器人,对吗?我希望用户是发件人。现在唯一有效的一行是:wait rMessage.ModifyAsync(msg=>msg.Content=e.Content.Replace(“fuck”,“f*ck”);除最初发送消息的用户外,任何用户都不能修改其他用户消息的内容。您可以删除他们的消息(授予权限),但不能编辑。您可以删除用户的消息,机器人可以使用替换的消息“like
JanMer writed:f*ck