Ответы пользователя по тегу Discord
  • Проблема с cogs, переделал код и не могу понять в чём проблема?

    Vindicar
    @Vindicar
    RTFM!
    Из документации по purge():
    You must have the manage_messages permission to delete messages even if they are your own (unless you are a user account). The read_message_history permission is also needed to retrieve message history.

    У бота точно есть разрешения на это?

    Далее, purge(limit = 1) - что вообще пытаетесь сделать? Удалить сообщение с командой? purge() вообще-то для массовых удалений по критерию.
    Не лучше ли будет использовать ctx.message.delete()?
    Ответ написан
    1 комментарий
  • Как исправить ошибку discord.py?

    Vindicar
    @Vindicar
    RTFM!
    Во-первых, фигачить cursor.execute() прямо в f-строку - это очень, очень плохая идея. За такое бьют по пальцам.
    Во-вторых, not subscriptable означает, что ты пытаешься обратиться по индексу (типа x[0]) в то время как объект (x) - это None.
    90% шанс что это вызов .fetchone()[0] - запрос к базе не находит нужную строку, тогда fetchone() возвращает None, а дальше попытка получить индекс от None генерирует исключение.

    Никогда, НИКОГДА не пиши в f-строках выражение сложнее чем 2*2. Вынеси промежуточный результат в переменную, проверь её значение на корректность, затем уже используй.
    Ответ написан
    Комментировать
  • Где тут ошибка?

    Vindicar
    @Vindicar
    RTFM!
    Не хочется ругаться матом, поэтому напишу на питоне
    class MyCog (commands.Cog):
        def __init__(self, bot):
            self.enter_times = {}
        @commands.Cog.listener()
        async def on_voice_state_update(self, member, before, after):
            if before.channel is None and after.channel is not None:
                #событие входа в чат - кладем время входа в словарь
                self.enter_times[member.id] = time.time() #число секунд от начала эпохи Unix
            elif before.channel is not None and after.channel is None:
                #событие выхода из чата - вытаскиваем время входа и удаляем его из словаря
                enter = self.enter_times.pop(member.id, None) 
                if enter is not None: # мало ли, бота перезапустили пока кто-то сидел в войсчате
                    delta = time.time() - enter # число секунд с момента входа
                    print(f'member {member.id}: {delta:.1f} seconds')
    Ответ написан
    Комментировать
  • Выдача ролей по реакциям discord.py?

    Vindicar
    @Vindicar
    RTFM!
    Гугли! На гитхабе discord.py есть готовый пример как это реализуется.
    Ответ написан
    Комментировать