首页 > 解决方案 > Discord py - 在后台任务中获取当前公会 ID

问题描述

因此,使用我的代码,如果当前公会 ID 与特定公会 ID 相同,我想向控制台打印一条消息。机器人应该检查数据库中列出的每个服务器。

这就是我的代码:

@tasks.loop(minutes=15.0)
async def topic():
            print("topic start")
            mydb = getConnection()
            mycursor = mydb.cursor()
            mycursor.execute(f"SELECT * FROM partner_list")
            myresult = mycursor.fetchall()
            for x in myresult:
                try:
                    x1 = [x]
                    guild = bot.get_guild(int(x1[0][0]))
                    name = (str(x1[0][1]))
                    print("inside try catch")
                    print(guild.id)
                    print(ctx.guild.id) # <--- This doesn't work
                    if int(ctx.guild.id) == int(guild.id):
                        print("Trading Sucht")
                        #mydb.commit()
                except:
                    pass
            mycursor.close()
            mydb.close()

错误是 ctx.guild.id 不起作用,因为他找不到“ctx”。有没有其他方法可以让机器人遍历我数据库中的每个公会 ID 行并检查当前公会 ID 是否与数据库中的相同?

标签: pythonpython-3.xdiscord.py

解决方案


您想要提取guild id,这可以通过创建另一个命令来完成。

我假设这个机器人是针对单个服务器的。

1.创建一个空列表:

guild_id = []

2. 创建一个命令列表:

async def func():
    for guild in client.guilds:
        id = guild.id
        print(id) # As your BOT is in one single server, only one ID would be extracted and this can be used.
        guild_id.append(id)

现在,您可以在任何地方使用列表中的 ID。:D

这是你可以解决的。如果您仍然收到此错误,请随时提出任何问题。:)

谢谢你!:D


推荐阅读