Discord.NET 将消息发送到一台特定服务器中的一个特定频道

Discord.NET sending messages to one specific channel in one specific server

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

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

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

实际上,意识到这一点后我觉得有点愚蠢,在我之前的代码中,我让程序尝试寻找一个频道,而我真正需要做的是寻找一个文本频道,就像这样:

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

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

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

我知道这是一个旧的 post 但对于它的价值,这是我的解决方案。代码在 vb 中并且运行良好。

  1. 查看 SendMessageAsync() 函数末尾的 .GetAwaiter().GetResult()。这让我不必在那行之前放 'await' :).

  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