Ошибка в строке, где задается значение until_date:
until_date = datetime.now() + timedelta(minutes=minutes)
В приведенном выше коде для until_date используется тип данных datetime, так как timedelta прибавляется к текущему времени. Однако тип until_date, ожидаемый методом restrict_chat_member, - это int, представляющий количество секунд с начала эпохи Unix.
Чтобы исправить ошибку, преобразуйте until_date в тип int следующим образом:
until_date = int((datetime.now() + timedelta(minutes=minutes)).timestamp())
Это обеспечит правильный формат для параметра until_date и решит проблему с бесконечным запретом.
Полный исправленный код:
def mute(message):
if not message.reply_to_message:
bot.reply_to(message, "Использование: ответьте на сообщение пользователя и введите /mute ")
return
try:
command, minutes = message.text.split()
minutes = int(minutes)
except ValueError:
bot.reply_to(message, "Использование: /mute ")
return
user_to_mute = message.reply_to_message.from_user
until_date = int((datetime.now() + timedelta(minutes=minutes)).timestamp())
bot.restrict_chat_member(
chat_id=message.chat.id,
user_id=user_to_mute.id,
until_date=until_date,
can_send_messages=False
)
bot.reply_to(message, f"Пользователь {user_to_mute.username or user_to_mute.first_name} замучен на {minutes} минут.")