• Как написать скрипт для пересылки сообщений в чужих ботов?

    @maximq
    QA Engineer
    Боты не могут общаться друг с другом, иначе могут застрять в бесконечном цикле.
    https://core.telegram.org/bots/faq#why-doesn-39t-m...

    Используйте userApi, из бота передавайте информацию в пользовательский клиент (аккаунт), и оттуда обращайтесь к другому боту. Для этого подойдёт telethon.
    https://docs.telethon.dev/
    Ответ написан
    Комментировать
  • Почему после мута пользователя бан дается не равномерно?

    febday
    @febday
    Уберите умножение и используйте timestamp
    mute_hour = int(message.text[6:])
    time_with_num = datetime.now() + timedelta(hours=mute_hour)
    time_with_timestamp = time_with_num.timestamp()
    real_time = time_with_num.strftime("%H:%M:%S")
    await message.bot.restrict_chat_member(chat_id=message.chat.id,
                    user_id=message.reply_to_message.from_user.id,
                    until_date = time_with_timestamp,
                    permissions=types.ChatPermissions(can_send_messages=False)
    )
    Ответ написан
    2 комментария
  • Как запретить пользователю писать сообщения в группе на время?

    @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
    Ответ написан
    3 комментария
  • Почему при повторной нажатии Reply кнопки ничего не выводится?

    RimMirK
    @RimMirK
    Вроде человек. Вроде учусь. Вроде пайтону
    потому-что у тебя 2 равносильных обработчика.
    @bot.callback_query_handler(func=lambda call: True)
    def сallbacktomsk(call):
    все на себя перехватывает, все остальные уже не сработают никак.
    Порядок обработчиков всегда от более "конкретным" до менее.
    С начала обработчики команд (/command)
    Потом обработчики, например, картинок.
    Потом обработчик всех сообщений, например, чтобы сказать что бот не понял пользователя (т.к. это сработает только если все выше не сработало.)
    Потом уже инлайн обработчики, тоже уменьшая поле "зрения". Желательно вообще один.
    @bot.callback_query_handler(func=lambda c: True)
    def callback(c):
        if c.data.startswith('city'):
            match c.data.split('city',1)[-1]:
                case 'tomsk': ...


    и не надо прописывать для каждого города по варианту. Используй БД.
    Ответ написан
    3 комментария