• Дайте советы по коду?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Выходите из подпрограммы как можно раньше, это позволит не выполнять лишние действия и уменьшит вложенность.
    @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)
    Ответ написан
    Комментировать
  • Можно ли создать cogs для событий?

    fenrir1121
    @fenrir1121 Куратор тега discord.py
    Начни с документации
    Вы прочитали гайд по библиотеке? Он у них есть.
    Для слушания событий в когах есть Cog.listener
    Ответ написан
    2 комментария
  • Почему то дискорд бот не реагрует на события on_member_remove и on_member_join?

    Vindicar
    @Vindicar
    RTFM!
    client = disnake.Client()
    Intents.members = True

    А ничего, что то что ты тут присвоил, вообще ни на что не влияет? Ты же интенты в клиента не передаёшь.
    Не говоря у же о том, что ты работаешь зачем-то с классом Intents, а надо с экземпляром класса.
    Ответ написан
    1 комментарий
  • Почему event on_member_join не работает?

    fenrir1121
    @fenrir1121 Куратор тега discord.py
    Начни с документации
    Вероятно на портале для разработчиков не включено соответствующее разрешение
    1LCiuFF.png

    В коде проблем нет, хотя он несколько мудреный. Если хочется структурировать события, для этого стоит использовать disnake.Client
    import disnake
    
    class MyClient(disnake.Client):
        async def on_member_join(self, member: disnake.Member):
            guild = member.guild
            if guild.system_channel:
                to_send = f"Welcome {member.mention} to {guild.name}!"
                await guild.system_channel.send(to_send)
    
        async def on_ready(self):
            print(f"Logged in as {self.user} (ID: {self.user.id})\n------")
    
    intents = disnake.Intents.default()
    intents.members = True
    
    if __name__ == "__main__":
        client = MyClient(intents=intents)
        client.run(os.getenv("BOT_TOKEN"))
    Ответ написан
    4 комментария