python - 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 是否与数据库中的相同?
解决方案
您想要提取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
推荐阅读
- web-scraping - 如何在 requests.post() 中生成 Python XHR 请求
- python - 如何使用 Python 的 ipaddress 模块查找子网/ip 是否在更大的子网中?
- php - 如果它们位于同一服务器中,如何将下一个 js 连接为前端,将 codeignitor 连接为后端
- python - Matplotlib xticks 范围和标签问题
- jmeter - 如何使用 JMeter 测试单页应用程序的客户端性能测试
- html - 使用文本文件中的日期作为下拉列表的选项
- reactjs - 在这种情况下如何声明类型?
- python - pip install pacakge 出现错误“由于 EnvironmentError 无法安装软件包”
- python - 如何将新变量更新到详细信息列?
- javascript - RTCPeerConnection - MediaStreamTrack 从外部源重新流式传输时只有黑帧