@clazy13

Как запретить пользователю писать сообщения в группе на время?

Нужно запретить пользователю писать в чат на определенное время(например 30сек), но у меня он запрещает писать походу навсегда, как это исправить?

@dp.message_handler(commands=['mute'], commands_prefix='/')
async def mute_user(message: types.Message):
    if message.chat.type in (
        types.ChatType.GROUP,
        types.ChatType.SUPERGROUP
    ):
        if message.from_user.id == admin_id_leru:
            if message.reply_to_message != None:
                mute_hour = int(message.text[6:])
                ban_time = int(time.time()) + 30
                add_mute(message.reply_to_message.from_user.id, mute_hour * 30)
                await bot.restrict_chat_member(chat_id=message.chat.id,
                user_id=message.reply_to_message.from_user.id,
                until_date=ban_time,
                can_send_messages=False)
                await bot.delete_message(chat_id=message.chat.id, message_id=message.message_id)
                await message.reply_to_message.reply(f'Пользователь был замучен на {mute_hour} час')
            else:
                await message.reply('Эта команда должна быть ответом на сообщение!')
  • Вопрос задан
  • 1328 просмотров
Решения вопроса 1
@twistfire92
Python backend developer
Есть вероятность, что сервер телеги ожидает от вас время UTC+0, а вы, возможно передаете время своего часового пояса, (UTC+3 или где вы находитесь), поэтому пользователь блокируется не на 30 секунд, а на 3 часа 30 секунд (опять же, если у вас часовой пояс +3)

Также в документации Bot API указано, что если время бана меньше 30 секунд или больше 366 дней, то пользователь блокируется навсегда.

Я бы начал проверку с часовых поясов.

UPD
А вы точно правильно используете метод
restrict_chat_member?
await bot.restrict_chat_member(chat_id=message.chat.id,
                user_id=message.reply_to_message.from_user.id,
                until_date=ban_time,
                permissions=ChatPermissions(can_send_messages=False)
                )


Все разрешения нужно передавать через отдельный объект ChatPermissions в параметре permissions
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы