【问题标题】:Discord Bot MessageDeleted event handler not working correctlyDiscord Bot MessageDeleted 事件处理程序无法正常工作
【发布时间】:2019-06-06 00:48:20
【问题描述】:

我想制作一个记录已删除消息的不和谐机器人。

所以我创建了 MessageDeleted 事件处理程序,但它无法正常工作。

我找不到我的代码有什么问题。

private async Task Client_MessageDeleted(Cacheable<IMessage, ulong> arg1, ISocketMessageChannel channel)
{
    Task<IMessage> msg = arg1.GetOrDownloadAsync();
    EmbedBuilder embed = new EmbedBuilder();

    embed.WithColor(40, 200, 150);
    embed.AddField("deleted message", msg.ToString());

    await channel.SendMessageAsync("", false, embed.Build());
}

【问题讨论】:

    标签: c# discord.net


    【解决方案1】:

    替换

    embed.AddField("deleted message", msg.ToString());
    

    embed.AddField("deleted message", msg.Content);
    

    通过https://discord.foxbot.me/docs/api/Discord.IMessage.html

    【讨论】:

    • 我用 msg.Content 替换了 msg.ToString。但这一次,它不起作用。
    【解决方案2】:

    我之前没有开发过 Discord Bot,所以请原谅我的无知,但我假设这句话:

    Task<IMessage> msg = arg1.GetOrDownloadAsync();
    

    实际上应该是:

    IMessage msg = await arg1.GetOrDownloadAsync();
    

    【讨论】:

      【解决方案3】:

      正如其他人所指出的,您必须等待您的任务。但是,您缺少一项关键配置 - 启用消息缓存。使用 Discord.Net 和 MessageDeleted 事件,为了检索消息,您必须启用缓存,因为您无法从 Discord 服务器检索已删除的消息。要启用缓存,请在DiscordSocketConfig 对象中设置MessageCacheSize 并将其传递给DiscordSocketClient

      设置缓存

      var config = new DiscordSocketConfig {MessageCacheSize = 100};
      var client = new DiscordSocketClient(config);
      

      从缓存中获取已删除的消息

      private Task OnMessageDeleted(Cacheable<IMessage, ulong> msg, ISocketMessageChannel channel)
      {
          Console.WriteLine(msg.HasValue ? 
              msg.Value.Content : 
              "A message was deleted, but its content could not be retrieved from cache.");
          return Task.CompletedTask;
      }
      

      Discord.Net 文档中详细记录了此事件,请参阅MessageDeleted event

      【讨论】:

        猜你喜欢
        • 2014-07-27
        • 2013-03-25
        • 2020-08-24
        • 2014-10-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-24
        • 1970-01-01
        相关资源
        最近更新 更多