Ответы пользователя по тегу TeleBot
  • Как перезапустить весь скрипт с ботом?

    phaggi
    @phaggi
    лужу, паяю, ЭВМы починяю
    Похоже на проблему XY.
    Можно так:
    def payload(counter):
        if input(counter):
            raise ZeroDivisionError
        counter += 1
        return counter
    
    
    def repeater():
        
        cnt = 0
        while True:
            try:
                cnt = payload(cnt)
            except ZeroDivisionError:
                print('\ncode restarted')
                repeater()
                
    
    repeater()


    Можно еще так:
    def repeate(func):
        cnt = 0
        while True:
            try:
                cnt = func(cnt)
            except ZeroDivisionError:
                print('\ncode restarted')
                func()
    
    @repeate
    def payload(counter=0):
        if input(counter):
            raise ZeroDivisionError
        counter += 1
        return counter
    
    payload()
    Ответ написан
    1 комментарий
  • Вызывает ошибку callbackquery has no attribute text.Как быть?

    phaggi
    @phaggi
    лужу, паяю, ЭВМы починяю
    Zoomf192, основная проблема в том, что вы не разобрались, как работают и как и зачем устроены хэндлеры, но пытаетесь их использовать «по аналогии».
    Так не работает.

    Что именно вам надо писать? За вас никто делать работу тут не должен. С этим - на фриланс.

    И вообще, боты штука сложная и с налету их «за 30 минут» не сделать, это вас обманули.
    spoiler
    Подскажу, что хэндлер принимает в качестве параметра функцию. Например:
    @bot.callback_query_handler(func=lambda call: True)
    def handle_callback(call):
        bot.answer_callback_query(call.id, text='Callback received')

    Параметр func с лямбдой - это и есть пример такой функции, передаваемой как параметр хэндлера, означающий, что функция handle_callback, зарегистрированная при помощи обертки-хэндлера, при любом обратном вызове активируется, так как func просто всегда True
    Он может быть не явно True, там можно написать какое-то условие, которое при выполнении вернёт True и тогда хэндлер сработает.
    Как именно… посмотрите в самом коде telebot, на GitHub есть его код, там есть примеры, в т.ч. примеры callback.
    Ответ написан
    Комментировать
  • Как сделать что бы бот отправлял следующую строчку из файла?

    phaggi
    @phaggi
    лужу, паяю, ЭВМы починяю
    Самый простой вариант - сложить все строки в список и выдергивать их оттуда методом .pop(), отлавливая соответствующий exception об отсутствии элементов в списке. Недостатки:
    • при перезагрузке бота всё начнется сначала.
    • всё это будет работать только для одного клиента, если их станет одновременно несколько, всё запутается.

    Для работы с несколькими пользователями надо делать через счетчик и для каждого пользователя свой счетчик заводить и хранить его вне кода, каждый раз меняя. Или пересохранять в файл типа json, или хранить в БД. С файлом проблема с одновременным доступом, надо затевать очередь и асинхронный доступ.
    Лучше в БД, это универсальней и надежней, но несколько замороченнее. Зато там можно всё хранить, и ваши строки, и всех пользователей со всеми их атрибутами.
    Ответ написан
    Комментировать
  • Как решить проблему с выводом аудио файла через бота тг?

    phaggi
    @phaggi
    лужу, паяю, ЭВМы починяю
    Исправлять за вас никто не будет, скорее всего.
    Рекомендую либо сделать проверку состояния url-параметра requests что оно is not None, либо обрабатывать вашу конкретную ошибку при помощи try/exception.
    Ответ написан
    Комментировать
  • Как вызвать функцию с аргументом message в Python?

    phaggi
    @phaggi
    лужу, паяю, ЭВМы починяю
    Конструкция my_value == “start” or “выбрать игру”
    всегда, когда my_value не равно start, вернёт строку «выбрать игру».
    Видимо, это не то, что вы ожидали.

    Кроме того, в параметре хэндлера имя переменной в лямбде messsage, а функция ожидает message, есть ощущение, что это не то, что планировалось.
    Ответ написан
    1 комментарий
  • Почему бот в телеграмме не видит сообщения?

    phaggi
    @phaggi
    лужу, паяю, ЭВМы починяю
    Возможно, дело в том, что massage.content_type скорее всего возвращает строку, а вы сравниваете massage.content_type со списком.
    Ответ написан
    Комментировать
  • Нужна помощь с запросом в sqlite3 python telebot?

    phaggi
    @phaggi
    лужу, паяю, ЭВМы починяю
    Нужна помощь с запросом в sqlite3 python telebot?

    Нет, не нужна.
    Ответ написан
    Комментировать