【问题标题】:DM Join message not working in Discord C# BotDM Join 消息在 Discord C# Bot 中不起作用
【发布时间】:2020-04-18 09:29:59
【问题描述】:

我收到错误消息,当我尝试为欢迎消息创建 DM 频道时,我收到错误消息:无法通过引用转换、装箱转换、拆箱转换、包装转换或空类型转换将类型转换为。

这是我的代码。

        {
            var channel = _client.GetDMChannelsAsync() as SocketDMChannel;
            await channel.SendMessageAsync("Welcome to Noice Discord!");
        }

在我的 handlecommandsasync 函数中,底部也有这个。 _client.UserJoined += AnnounceJoinedUser;

任何帮助都会很好,因为我真的被困在这里了。

【问题讨论】:

  • GetDMChannelsAsync 被记录为返回 Task<IEnumerable<IDMChannel>>。您的as 演员表无效,因为在可枚举频道的任务和特定频道实例之间没有转换。
  • 我真的不明白我要做什么

标签: c# discord


【解决方案1】:

首先,您似乎使用的是过时版本的库,我建议您更新。

其次,假设您的代码中的_client 是您的UserJoined 事件处理程序提供的SocketGuildUser(考虑给它一个更好的名称,并且在将来寻求帮助时,提供所有需要的代码) ,您无需将其转换为任何内容并且您想等待它。
而且您不应该使用GetDMChannelsAsync
(注意复数,也许你是不小心做了这个?去掉那个)

这就是你想要的结果(在更新版本的 Discord.NET 上)

var channel = await _client.GetDMChannelAsync();
await channel.SendMessageAsync("Welcome to Noice Discord!");

或者,如果您更改为更新版本的库,该方法将重命名为GetOrCreateDMChannelAsync

【讨论】:

  • 是的,我确实想使用 DMCHannel。我马上更新。
  • 你用什么检查的?您是否将其用作 nuget 包并在 Visual Studio 中使用 nuget 包管理器?
  • 是的,我在 Visual Studio 中使用 NuGet 包管理器
  • 你用的是什么版本?将此https://www.myget.org/F/discord-net/api/v3/index.json 添加为您的 nuget 设置中的包源,并在搜索更新时,在右上角选择此源(或所有源)。
  • 哦,那确实是最新(稳定)版本。这很奇怪,因为我很确定 GetDMChannelAsync 已重命名为 GetOrCreateDMChannelAsync。开始怀疑您的项目或代码有其他问题。因为我认为 2.1.1 中的 SocketGuildUser 甚至不应该存在这种方法
猜你喜欢
  • 1970-01-01
  • 2022-01-05
  • 2021-06-16
  • 1970-01-01
  • 2020-07-27
  • 2019-07-04
  • 2021-06-07
  • 2021-06-04
  • 2020-08-31
相关资源
最近更新 更多