Discord.NET C# 更改套接字消息的内容



因此,每当服务器上的任何人使用我的机器人向任何文本通道发送消息时,我都会监听该事件。我想检测像"他妈的"这样的脏话并将其更改为"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"));

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

也许你可以尝试这样的东西

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);
}
}

最新更新