Discord.NET C#1.0.2如何向特定频道发送消息

时间:2018-04-05 02:13:13

标签: c# discord.net

我正在制作一个可以在特定事件发生时宣布消息的机器人。有谁知道如何将消息输出到特定的文本频道?

不重复,没有C#版本。

4 个答案:

答案 0 :(得分:2)

public async Task Announce() // 1
{
    DiscordSocketClient _client = new DiscordSocketClient(); // 2
    ulong id = 123456789012345678; // 3
    var chnl = _client.GetChannel(id) as IMessageChannel; // 4
    await chnl.SendMessageAsync("Announcement!"); // 5
}

[1]标准的异步任务(您可以选择在自己的方法中将代码包含在大括号内)。
[2]创建Discord客户端的实例 [3]随机顺序通道ID(替换为您自己的通道ID) [4]将Discord频道的实例创建为IMessageChannel而不是SocketChannel [5]将消息发送到文本频道。

答案 1 :(得分:0)

public async Task TalkInChannel() //1
{
   DiscordSocketClient _client = new DiscordSocketClient(); //2
   var channel = _client.GetChannel(Channel ID) as SocketGuildChannel; //3
   await channel.SendMessageAsync("Message Here!"); //4
}
  

您还可以通过创建嵌入然后替换“此处的消息!”来使用嵌入。带有“”“,假EmbedName.Build()”

答案 2 :(得分:0)

就像@slothgod所说的

    public async Task Announce() // 1
{
    DiscordSocketClient _client = new DiscordSocketClient(); // 2
    ulong id = 123456789012345678; // 3
    var chnl = _client.GetChannel(id) as IMessageChannel; // 4
    await chnl.SendMessageAsync("Announcement!"); // 5
}

当您只想在一个通道中发送答复前缀消息(如上面的代码中的“ Announcement!”)时,以上代码将起作用。您可以在“ ulong id = ....您的频道ID在这里......”中更改频道。

但是,如果您要将自定义消息发送到自定义频道,请尝试以下代码。

    public async Task _say(IMessageChannel chh,[Remainder]string repeat)
{
    await Context.Message.DeleteAsync();
    await chh.SendMessageAsync(repeat); // 5
}

要使用我发送的代码,只需键入以下命令:"Your Bot Prefix and Command" "Channel name or ID" "Message you want to send"

示例:DFH.say TestChannel Welcome to this channel

答案 3 :(得分:0)

我所做的是: 使用依赖项注入使登录的客户端在我想发送消息的任何地方都可用,在我的情况下,这是一个模块。

public XModule(DiscordSocketClient client){
 this.client = client;
}

然后如@slothgod所说:

 private async Task Announce(ExampleType object) //1
        {
            ulong id = object.ChannelId; // 3
            var chnl = client.GetChannel(id) as IMessageChannel; // 4
            await chnl.SendMessageAsync("Message!"); // 5
        }