【问题标题】:Discord py - Get current guild id in background taskDiscord py - 在后台任务中获取当前公会 ID
【发布时间】:2021-04-10 23:41:43
【问题描述】:

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

【问题讨论】:

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


    【解决方案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

    【讨论】:

    • 我得到了TypeError: topic() missing 1 required positional argument: 'ctx' 我在on_ready 事件中使用了topic.start()
    • 糟糕!我正在对答案进行一些更改。请检查它们。
    • 答案已编辑! @Overdrive
    • 欢迎您! :D 很高兴为您提供帮助!
    猜你喜欢
    • 2022-12-10
    • 2021-06-23
    • 1970-01-01
    • 1970-01-01
    • 2011-03-19
    • 2021-11-10
    • 2022-08-09
    • 1970-01-01
    • 2013-12-09
    相关资源
    最近更新 更多