所以我想向我的机器人所在的所有服务器发送一个公告。我在 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")
Run Code Online (Sandbox Code Playgroud)
我也发现了一个类似的问题,但它在 discord.js 中。它说的是默认频道,但是当我尝试时:
@bot.event
async def on_ready():
await bot.send_message(discord.Server.default_channel, "Hello everyone")
Run Code Online (Sandbox Code Playgroud)
它给了我错误:目标必须是频道、私人频道、用户或对象
首先回答您的问题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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3990 次 |
| 最近记录: |