【问题标题】:Discord.NET sending messages to one specific channel in one specific serverDiscord.NET 将消息发送到特定服务器中的特定通道
【发布时间】:2018-06-01 18:00:06
【问题描述】:

所以我正在尝试向特定频道发送消息,但我一直在寻找并发现我看不到任何方法可以做到这一点。我可能做错了什么,或者我正在寻找错误的区域,我在谷歌上查看并找不到答案。这是我试图找到它时的代码。

     discord.GetGuild("serverid").GetChannel("Channelid")

据我所知,这不是这样做的方法,但我不知道还有哪里可以检查:\

【问题讨论】:

  • 您是否广泛搜索过文档?
  • 我在试图找到答案时查看了它,但从我查看的内容来看,我看不到任何可行的方法(我尝试了一些)。

标签: vb.net discord.net


【解决方案1】:

实际上,意识到这一点后我有点傻,在我之前的代码中,我正在让程序尝试找到一个频道,而我真正需要做的是找到一个文本频道,如下所示:

    discord.GetGuild("serverid").GetTextChannel("Channelid").SendMessageAsync(
    "Message")

很抱歉在答案非常简单的情况下寻求帮助。 :/

【讨论】:

  • 不要因为问 SO 而道歉。此外,最好将其标记为已接受的答案。
【解决方案2】:

获取频道时,您不需要获取公会,所有频道都在您的客户端内 所以 discord.GetTextChannel("id").SendMessageAsync("message") 就够了

【讨论】:

  • Discord.WebSocket.DiscordSocketClient.GetTextChannel 似乎不存在。
【解决方案3】:

我知道这是一篇旧帖子,但值得的是,这是我的解决方案。代码在vb中,运行良好。

  1. 查看 SendMessageAsync() 函数末尾的 .GetAwaiter().GetResult()。这让我不必在该行之前加上“等待”:)。

  2. 哦,公会和频道 ID 不是字符串,而是 Long 类型

  3. 我通过搜索每个 :) 的名称从服务器获取 ID。所以不需要事先知道 ID :)。

哦,这个函数不是异步类型的,所以如果你将它用作异步任务,你需要在你的代码中进行调整。

_guild.id 和 _channel 变量也是 ULong 类型。 VB允许你声明一个变量而不说明它是什么类型。 VB 将根据声明右侧的内容自动检测它是什么类型。

    Sub sendMessageToChannel(ByVal server As String, ByVal channel As String, ByVal msg As String)
Try
    Dim _guild = _client.Guilds().First(Function(z) z.Name = server)
    Dim _channel = _guild.TextChannels().First(Function(z) z.Name = channel).Id
    _client.GetGuild(_guild.Id).GetTextChannel(_channel).SendMessageAsync(msg).GetAwaiter().GetResult()
Catch ex As Exception
    Debug.Print("Error:" & Constants.vbCrLf + ex.ToString())
End Try     End Sub

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-01-26
    • 2021-08-20
    • 2021-05-18
    • 2019-06-25
    • 2019-09-03
    • 2020-01-07
    • 1970-01-01
    • 2021-10-28
    相关资源
    最近更新 更多