我正在尝试学习discord.net的任务部分,并且一直在尝试记录用户删除消息时的记录,但是我没有使它起作用,所有帮助将不胜感激。
这是我当前的代码,请记住,我将MessageCacheSize设置为合理的大小
internal static async Task LogDeleted(Cacheable<IMessage, ulong> arg1, ISocketMessageChannel arg2)
{
EmbedBuilder eb = new EmbedBuilder();
EmbedFooterBuilder efb = new EmbedFooterBuilder();
var msg = arg1.GetOrDownloadAsync();
eb.Title = "Message deleted";
eb.AddField("Message:", $"{msg}");
await arg2.SendMessageAsync("", embed: eb);
}
答案 0 :(得分:0)
我很确定await arg2.SendMessageAsync("", embed: eb);
会给您一个错误,因此将其更改为eb.Build(),就像StringBuilder一样,您还必须在末尾执行ToString。至于其他部分,这似乎还不错,但是您可能会遇到Ratelimit Issues,因为使用bot可以批量删除,这将导致为每条消息发送的代码都删除了一条新消息。您需要做一个批量删除检测系统,因为Discord本身会进行批量删除,就像逐个删除每个邮件一样。
请注意,您也可以执行以下操作:eb.AddField("Message:", msg.Content or msg.ToString());
而不是eb.AddField("Message:", $"{msg}");
。