проблема с выдачей роли
я написал код, в нём есть кое какая деталь, если при выходе с сервера у человека есть роль то в БД заносится цифра 1, а при повторном входе если у человека там есть 1 то значит человеку надо дать ДРУГУЮ роль. Ошибок не выводит
@client.event
async def on_ready ():
print ('готово')
cursor.execute ("""CREATE TABLE users (
id BIGINT,
roleid INT
)""")
connection.commit()
for guild in client.guilds:
for member in guild.members:
for role in guild.roles:
if cursor.execute(f'SELECT id FROM users WHERE id = {member.id}').fetchone() is None:
cursor.execute (f'INSERT INTO users VALUES ({member.id}, 0)')
else:
pass
connection.commit()
@client.event
async def on_member_join (member):
print ('присоединился')
for guild in client.guilds:
for member in guild.members:
for role in guild.roles:
if cursor.execute(f'SELECT id FROM users WHERE id = {member.id}').fetchone() is None:
cursor.execute (f'INSERT INTO users VALUES ({member.id}, 0)')
print ('sfs')
connection.commit()
else:
if cursor.execute(f'SELECT id FROM users WHERE id = {member.id}').fetchone() is True:
if cursor.execute(f'SELECT roleid FROM users WHERE roleid = 1').fetchone() is True:
role = discord.utils.get(member.guild.roles, id=842092409554599936)
await member.add_roles(member, role)
print ('sfsfs')
connection.commit()
else:
pass
connection.commit()
@client.event
async def on_member_remove (member):
print ('отключился')
for guild in client.guilds:
for member in guild.members:
for role in guild.roles:
if cursor.execute(f'SELECT id FROM users WHERE id = {member.id}').fetchone() is None:
cursor.execute (f'INSERT INTO users VALUES ({member.id}, 0)')
connection.commit()
else:
if cursor.execute(f'SELECT id FROM users WHERE id = {member.id}').fetchone() is True:
if cursor.execute(f'SELECT roleid FROM users WHERE roleid = {member.roles}').fetchone() is True:
if {member.roles} == 842092409554599936:
cursor.execute (f'UPDATE users SET roleid == ? WHERE id == ?'.format(), (1,member.id))
connection.commit()
connection.commit()
Ответы (1 шт):
Автор решения: denisnumb
→ Ссылка
Возможно проблема в том, что при запуске бота вы каждый раз заново создаете базу данных. Попробуйте при ее создании добавить условие IF NOT EXISTS
cursor.execute ("""CREATE IF NOT EXISTS TABLE users (
id BIGINT,
roleid INT
)""")
Тогда, если таблица уже существует, она не будет создана заново