因此,我现在按照教程使用sqlite创建了一个invite记录器。这是我的设置功能
async def setup(self):
await self.bot.wait_until_ready()
self.bot.db = await aiosqlite.connect("inviteData.db")
await self.bot.db.execute("CREATE TABLE IF NOT EXISTS totals (guild_id int, inviter_id int, normal int, left int, fake int, PRIMARY KEY (guild_id, inviter_id))")
await self.bot.db.execute("CREATE TABLE IF NOT EXISTS invites (guild_id int, id string, uses int, PRIMARY KEY (guild_id, id))")
await self.bot.db.execute("CREATE TABLE IF NOT EXISTS joined (guild_id int, inviter_id int, joiner_id int, PRIMARY KEY (guild_id, inviter_id, joiner_id))")
for guild in self.bot.guilds:
for invite in await guild.invites():
await self.bot.db.execute("INSERT OR IGNORE INTO invites (guild_id, id, uses) VALUES (?,?,?)", (invite.guild.id, invite.id, invite.uses))
await self.bot.db.execute("INSERT OR IGNORE INTO totals (guild_id, inviter_id, normal, left, fake) VALUES (?,?,?,?,?)", (guild.id, invite.inviter.id, 0, 0, 0))
await self.bot.db.commit()
现在,如果他们用机器人做任何事情,比如现在做一个邀请,我需要做一个addinvites命令,并且只有当这个人在数据库中时,这个命令才会起作用,所以有人能告诉我如何做一个命令或编辑它,使它将公会中的每个人都添加到数据库中
这也是我的update_totals
函数的代码
async def update_totals(self, member):
invites = await member.guild.invites()
c = datetime.today().strftime("%Y-%m-%d").split("-")
c_y = int(c[0])
c_m = int(c[1])
c_d = int(c[2])
async with self.bot.db.execute("SELECT id, uses FROM invites WHERE guild_id = ?", (member.guild.id,)) as cursor:
async for invite_id, old_uses in cursor:
for invite in invites:
if invite.id == invite_id and invite.uses - old_uses > 0:
if not (c_y == member.created_at.year and c_m == member.created_at.month and c_d - member.created_at.day < 7):
print(invite.id)
await self.bot.db.execute("UPDATE invites SET uses = uses + 1 WHERE guild_id = ? AND id = ?", (invite.guild.id, invite.id))
await self.bot.db.execute("INSERT OR IGNORE INTO joined (guild_id, inviter_id, joiner_id) VALUES (?,?,?)", (invite.guild.id, invite.inviter.id, member.id))
await self.bot.db.execute("UPDATE totals SET normal = normal + 1 WHERE guild_id = ? AND inviter_id = ?", (invite.guild.id, invite.inviter.id))
else:
await self.bot.db.execute("UPDATE totals SET normal = normal + 1, fake = fake + 1 WHERE guild_id = ? and inviter_id = ?", (invite.guild.id, invite.inviter.id))
return
目前没有回答
相关问题 更多 >
编程相关推荐