Discord py - 在后台任务中获取当前公会 ID

时间:2021-04-10 15:19:57

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

因此,对于我的代码,如果当前公会 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 是否与数据库中的相同?

1 个答案:

答案 0 :(得分:1)

您想提取 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