Выходите из подпрограммы как можно раньше, это позволит не выполнять лишние действия и уменьшит вложенность.
@commands.Cog.listener()
async def on_message(self, message):
if message.author == self.bot.user:
return
if message.channel.id != 1233498806881095824:
return
user_id = message.author.id
current_time = time.time()
if not msg_delay(user_id, self, current_time):
await message.channel.send("Ожидайте перед следующим обновлением опыта.")
return
user_name = message.author.name
xp_amount = 100
if message.attachments:
xp_amount = 150
self.last_xp_update[user_id] = current_time
database.increase_xp(user_id, user_name, xp_amount)
guild_id = message.guild.id
guild = self.bot.get_guild(guild_id)
member = guild.get_member(user_id)
if member == None:
return
id_add_role, id_delete_role = await get_role_ids(user_id, user_name, db_levels, database)
await manage_roles(member, guild, id_add_role, id_delete_role)