所以我想向我的机器人所在的所有服务器发送公告。我在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