【问题标题】:How do I use discord.py to send a greeting message in the System Messages Channel如何使用 discord.py 在系统消息频道中发送问候消息
【发布时间】:2021-05-17 08:26:22
【问题描述】:

我正在编写一个简单的 discord 机器人,我想制作它,以便机器人在加入服务器时发送问候消息

@client.event
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('Thanks for inviting me.'.format(guild.name))

但是,此代码仅发送通用消息,如果通用通道未命名为“general”,则不会发送。所以现在我希望它在系统消息通道中发送消息。我该怎么做?

【问题讨论】:

  • 你有点不明白,让我解释一下。 Discord System Messages Channel 仅适用于社区服务器,discord 也允许服务器更改该频道的名称,因此即使您将其设置为我认为是默认名称的moderator-only,如果出现以下情况,它也不会发送:缺少权限,或者频道名称不同。希望您能理解,如果有人对此提出了答案,那么也许我错了。
  • @GarrettSucksAtCode 我进入我的服务器并检查过,我可能是错的,但如果你进入服务器设置 > 概述 > 系统消息频道,你可以选择系统消息的频道。那么这是否意味着我可以通过它?

标签: python discord.py


【解决方案1】:

您应该使用Guild.system_channel,但在某些情况下它可以是 None ,就好像服务器已删除系统通道一样

以下是修改后的代码:

@client.event
async def on_guild_join(guild):
    if guild.system_channel: # If it is not None
        await guild.system_channel.send(f'Thanks for inviting me to {guild.name}')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-03-24
    • 1970-01-01
    • 1970-01-01
    • 2021-05-03
    • 2021-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多