所以我想向我的机器人所在的所有服务器发送公告。我在github上找到了此公告,但它需要一个服务器ID和一个通道ID。

@bot.event
async def on_ready():
    server = bot.get_server("server id")
    await bot.send_message(bot.get_channel("channel id"), "Test")

我也找到了类似的问题,但这是在discord.js中。它说了一些默认频道,但是当我尝试时:
@bot.event
async def on_ready():
    await bot.send_message(discord.Server.default_channel, "Hello everyone")

它给了我错误:
目标必须是Channel,PrivateChannel,User或Object

最佳答案

首先回答有关default_channel的问题:自2017年6月以来,discord不再定义“默认”通道,因此,服务器的default_channel元素通常设置为“无”。

其次,通过说discord.Server.default_channel,您需要的是类定义的元素,而不是实际的通道。要获得实际频道,您需要一个服务器实例。

现在要回答原始问题,即向每个频道发送一条消息,您需要在服务器中找到一个实际可以在其中张贴消息的频道。

@bot.event
async def on_ready():
    for server in bot.servers:
        # Spin through every server
        for channel in server.channels:
            # Channels on the server
            if channel.permissions_for(server.me).send_messages:
                await bot.send_message(channel, "...")
                # So that we don't send to every channel:
                break

10-06 13:00
查看更多