【问题标题】:if message found in specific channel Discord.net如果在特定频道 Discord.net 中找到消息
【发布时间】:2019-06-25 01:46:06
【问题描述】:

您好,如果使用(onmsg 函数)在特定通道 ID 中创建消息,我会尝试获取通知。 (机器人运行时)

我的代码。

  If message.Source = MessageSource.Bot Then
        'ignore
    Else

        Dim msg As String = message.Content

        If message.Content.Contains("hello") Then


            If discord.Channel.id = "123456789" Then

                'send message by bot to the channel
                'Await message.Channel.SendMessageAsync("Sended in correcctly channel")

                'get notification

                MessageBox.Show("Sended in correcctly channel")

            End If

        End If
    End If

problem i got

严重性代码描述项目文件行抑制状态 错误 BC30456 'Channel' 不是 'DiscordSocketClient' 的成员。测试 C:\Users\diana\Desktop\1\Test\Test\Form1.vb 125 活动

【问题讨论】:

  • 嗨戴安娜!您能否在帖子中包含您遇到的错误或您遇到的具体问题?
  • @EvanM 完成。 (当我运行机器人时,如果在特定频道 ID“123456789”中找到“你好”,则会显示 message.show,更新帖子
  • 您的discord 变量是DiscordSocketClient 的一个实例,当您考虑它时,为什么Channel 不存在是合乎逻辑的。您如何从客户可能可以访问的数千个频道中获取频道?在这种情况下,您正在寻找 message.Channel,而不是 discord.Channel
  • @StillH.,谢谢它的工作,你能把它作为已回答的问题发布,...

标签: .net discord.net


【解决方案1】:

正如线程评论中所指出的,discord 指的是 OP 的 DiscordSocketClient,而后者又指的是当前的机器人客户端;因此,Channel 的单个对象不可能存在,因为机器人可能可以访问机器人范围内的多个“通道”。

OP 可能指的是消息到达的通道,即message.Channel

另外,值得注意的是,在确定频道类型时,由于其polymorphic nature,在使用 Discord.Net 时可能会有多种变体(例如,频道可以是语音、类别、文本频道等;请参阅@ 987654322@了解更多详情)。

尽管在 OP 代码的上下文中,只有 ISocketMessageChannel 或其实现是可能的,因为消息只能发送到消息通道。尽管如此,提出这个问题的原因是更多获取频道的方法有时可能只返回IChannel,从而使人们对为什么无法向该频道发送消息感到困惑。事实上,他们只需要(尝试)将通道转换为适当的类型(参见上面的词汇表)。

【讨论】:

    猜你喜欢
    • 2021-01-26
    • 1970-01-01
    • 2018-06-01
    • 1970-01-01
    • 2019-09-03
    • 2021-07-06
    • 1970-01-01
    • 1970-01-01
    • 2021-10-28
    相关资源
    最近更新 更多