0

我想让我的 Discord 机器人在启动时使用 Discord 消息生成器发送消息,但 .sendAsync() 需要 DiscordChannel 实体。我读过的所有指南都使用上下文,但我不能使用上下文,除非我正在回复一条消息,这是我做不到的。

static async Task Send(string text)
            {
                var msg = await new DiscordMessageBuilder()
                .WithContent(text)
                .SendAsync();
            }
4

1 回答 1

0

我不确定您所说的启动是什么意思,但我编写了一个解决方案,该解决方案适用于机器人在加入服务器时应该发送消息时。

首先,您的 Bot 需要一个特殊的意图,您可以将其添加到 DiscordConfiguration

Intents = DiscordIntents.Guilds

在这一步之后,您可以创建一个事件处理程序,当您的机器人加入公会时触发该事件处理程序。eventarguments 提供公会,您可以获取服务器的默认频道。

事件处理程序:

Client.GuildCreated += OnGuildCreated;

事件功能:

private Task OnGuildCreated(object sender, GuildCreateEventArgs e)
    {
        DiscordChannel defaultChannel =  e.Guild.GetDefaultChannel();
        defaultChannel.SendMessageAsync("Your text / message");


        return null;
    }

我希望我正确理解了你的问题。

编辑:该解决方案仅显示如何获取频道。如果默认频道不能/不应该使用,您也可以使用 Guild.Channels 获取服务器的所有频道。

于 2022-03-02T19:02:35.443 回答