我希望Discord机器人发送特定消息,例如:加入新服务器时显示“ Hello”。机器人应搜索要写入的顶部频道,然后在此处发送消息。 我看到了,但这对我没有帮助
async def on_guild_join(guild): general = find(lambda x: x.name == 'general', guild.text_channels) if general and general.permissions_for(guild.me).send_messages: await general.send('Hello {}!'.format(guild.name))```
答案 0 :(得分:1)
您使用的代码实际上非常有用,因为它包含您需要的所有构建基块:
on_guild_join
事件guild.text_channels[0]
async def on_guild_join(guild):
general = guild.text_channels[0]
if general and general.permissions_for(guild.me).send_messages:
await general.send('Hello {}!'.format(guild.name))
else:
# raise an error
现在,您可能会遇到的一个问题是,如果顶部频道类似于公告频道,那么您可能没有在其中发送消息的权限。因此,从逻辑上讲,您应该尝试下一个频道,如果该频道不起作用,请尝试下一个频道,等等。您可以在常规的while循环中进行此操作:
async def on_guild_join(guild):
for general in guild.text_channels:
if general and general.permissions_for(guild.me).send_messages:
await general.send('Hello {}!'.format(guild.name))
return
print('I could not send a message in any channel!')
因此,实际上,您说的“没用”的代码实际上是完成您想要做的事情的关键。下次,请简洁明了,说出没有什么用处,而不是仅仅说“这整个事情都没有用,因为它没有完成我想要的事情”。