Запуск асинхронного цикла при запуске бота
Всем привет. Я хотел при каждом запуске бота проверять наличие роли у всех пользователей сервера. Если значение истинно, то будет запускаться асинхронный цикл. Попробовал, но выдает ошибку.
@client.event
async def on_ready():
cursor.execute("""CREATE TABLE IF NOT EXISTS roles (
id INT,
roleid INT
)""")
await bd()
@client.event
async def bd():
for guild in client.guilds:
for member in guild.members:
roleexist = cursor.execute("SELECT roleid FROM roles WHERE id = {}".format(member.id)).fetchone()[0]
На строчке выше выдает ошибку NoneType Object
if roleexist is None:
pass
else:
asyncio.get_running_loop().create_task(roletaskformember(member, cursor))
async def roletaskformember(ctx, cursor):
balance = cursor.execute("SELECT cash FROM users WHERE id = {}".format(member.id)).fetchone()[0]
timesup = discord.Embed(description = str(member.name) + ", ваша кастомная роль истекла.", timestamp=ctx.message.created_at)
timesup.colour = discord.Colour.red()
timesup.set_author(name=member.name, icon_url=member.avatar_url)
roleexist = cursor.execute("SELECT roleid FROM roles WHERE id = {}".format(member.id)).fetchone()[0]
roletake = discord.utils.get(member.guild.roles, id = (roleexist))
while True:
await asyncio.sleep(36400)
if balance < 99:
await member.remove_roles(roletake)
await ctx.send(embed = timesup)
break
else:
cursor.execute("UPDATE users SET cash = cash - 99 WHERE id = {}".format(member.id))