我想让我的Discord bot在启动时使用Discord message Builder发送消息,但.sendAsync((需要DiscordChannel实体。我读过的所有指南都使用上下文,但除非我回复消息,否则我不能使用上下文,这是我做不到的
static async Task Send(string text)
{
var msg = await new DiscordMessageBuilder()
.WithContent(text)
.SendAsync();
}
我不知道你所说的启动是什么意思,但我写了一个解决方案,当机器人加入服务器时应该发送消息时,它就可以工作。
起初,你的机器人需要一个特殊的意图,你可以将其添加到你的DiscordConfiguration 中
Intents = DiscordIntents.Guilds
在这个步骤之后,你可以创建一个事件处理程序,当你的机器人加入公会时会触发。eventarguments提供了公会,您可以获得服务器的默认通道。
事件处理程序:
Client.GuildCreated += OnGuildCreated;
事件功能:
private void OnGuildCreated(object sender, GuildCreateEventArgs e)
{
DiscordChannel defaultChannel = e.Guild.GetDefaultChannel();
defaultChannel.SendMessageAsync("Your text / message");
}
我希望我正确理解了你的问题。
编辑:该解决方案仅显示如何获取通道。如果默认通道不能/不应该被占用,你也可以使用Guild.Channels获取服务器的所有通道。