我正在制作一个可以在特定事件发生时宣布消息的机器人。有谁知道如何将消息输出到特定的文本频道?
不重复,没有C#版本。
答案 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
}