c# - 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"));
解决方案
Discord 与其他聊天程序一样,不允许您更改用户的消息。您无法审查用户写的内容,您只能删除整条消息。
推荐阅读
- css - 当存在单独的元素时,可以在元素上放置 css 规则吗?
- java - 将 prometheus jmx 代理 jar 添加到 JIB 构建
- sql - 以 SQL Variant 作为列之一的非聚集索引如何工作?
- excel - 使用 VBA 过滤数据透视表
- python - AWS Lambda Python 读取所有行但不写入所有行
- flutter - 使用 Flutter 定期更新列表项
- reactjs - React,功能组件。输入字符时,输入焦点被抛出
- javascript - 当 ReactJS 中的某些条件为真时如何显示组件?
- flutter - 带有 mocktail 的单元测试通过但“Null”不是“Future<>”类型的子类型引发运行时异常
- java - STS 在 spring-boot 运行期间无法识别 POM 测试范围依赖性