【问题标题】:Checking for Multiple Guild ID's - Discord.py检查多个公会 ID - Discord.py
【发布时间】:2021-02-02 13:28:44
【问题描述】:

我正在尝试向加入我的不和谐服务器的用户发送欢迎 DM,但我在多个服务器中设置了机器人。我正在尝试检查公会,然后根据它所在的公会发送消息,但它不起作用。我看过了,stackoverflow 上类似这样的热门问题使用命令和 ctx,不能在 on_member_join() 中使用。

@client.event
async def on_member_join(member):
    guild = client.get_guild(762921541204705321)
    if guild == 762921541204705321:
        await member.create_dm()
        await member.dm_channel.send("Welcome!")

【问题讨论】:

    标签: python python-3.x discord discord.py


    【解决方案1】:

    According to the documentation,当您调用get_guild() 时,它不会返回公会ID,而是返回Guild 对象。 From the source code,看来这个公会类确实有它的比较运算符重载,所以它不能处理 Guild 对象和整数 ID 之间的比较。

    解决您的问题的方法是将数字 ID 与 Guild.id 属性进行比较:

    @client.event
    async def on_member_join(member):
        # client.get_guild returns a Guild object!
        guild = client.get_guild(762921541204705321)
    
        # Get the ID from the 'id' attribute on the guild object and compare.
        if guild.id == 762921541204705321:
            await member.create_dm()
            await member.dm_channel.send("Welcome!")
    

    【讨论】:

    • 这可行,但我添加了第二个公会 (guild2),无论如何它总是发送第一个 DM(永远不会到达第二个 elif)。这就是我所拥有的:@client.event async def on_member_join(member): guild1 = client.get_guild(762921541204705321) guild2 = client.get_guild(593941391110045697) if guild1.id == 762921541204705321: await member.create_dm() await member.dm_channel.send("Welcome!") elif guild2.id == 593941391110045697: await member.create_dm() await member.dm_channel.send(f"Welcome!")
    • @MrMetacom 如果您还有其他问题,请创建另一个帖子。代码格式在 cmets 中效果不佳。
    • 好的。我刚才不小心发了一个类似的问题,所以我得等一个半小时。
    猜你喜欢
    • 1970-01-01
    • 2021-02-03
    • 2021-03-11
    • 2021-02-27
    • 1970-01-01
    • 2020-01-14
    • 2021-03-14
    • 2020-12-09
    • 2022-07-07
    相关资源
    最近更新 更多