Задать вопрос
  • Как отправить сообщение от имени бота telegram python?

    @AlexSn2020
    Подскажите, а как настроить отправку ботом сообщения мне, к примеру каждые 5 мин. Напрмер, 'бот работает'
  • Почему прерывается работа бота?

    @AlexSn2020 Автор вопроса
    Спасибо, первый достойный ответ на этот вопрос во всей сети) Systemd мне не подойдёт, так как я понимаю, он только на Лине) Тогда будем пробовать второй вариант)
  • Почему прерывается работа бота?

    @AlexSn2020 Автор вопроса
    Я с этой ошибкой как у тебя и создал вопрос. Если вдруг получится найти решение отпиши, пожалуйста)
  • Почему прерывается работа бота?

    @AlexSn2020 Автор вопроса
    Теперь вылетает вот такая ошибка, причём она циклична, чередуется с той, что уазал.
    raise ApiException(msg, method_name, result)
    telebot.apihelper.ApiException: A request to the Telegram API was unsuccessful. The server returned HTTP 409 Conflict. Response body:
    [b'{"ok":false,"error_code":409,"description":"Conflict: terminated by other getUpdates request; make sure that only one bot instance is running"}']
    "
  • Как реализовать одновременное использование Telegram бота несколькими пользователями?

    @AlexSn2020 Автор вопроса
    Hukyl, немного переделал код, но всё равно вылетает ошибка
    import config
    import mail
    import exmo_exchange
    import telebot
    from telebot import types
    from random import randint
    
    class MyBot:
        def __init__(self, bot,keyboard1, keyboard2, keyboard3):
            self.bot=bot
            self.keyboard1=keyboard1
            self.keyboard1.row('EXMO')
            self.keyboard2=keyboard2
            self.keyboard2.row('Да',' Нет')
            self.keyboard3=keyboard3
            self.keyboard3.row('Я ОПЛАТИЛ')
            self.summi_coda_i_plati=[]
            
            self.bot.polling()
    
        
        """
        bot=telebot.TeleBot(config.token)
        keyboard1=telebot.types.ReplyKeyboardMarkup(True)
        keyboard1.row('EXMO')
        keyboard2=telebot.types.ReplyKeyboardMarkup(True)
        keyboard2.row('Да',' Нет')
        keyboard3=telebot.types.ReplyKeyboardMarkup(True)
        keyboard3.row('Я ОПЛАТИЛ')
        summi_coda_i_plati=[]
        """
        @bot.message_handler(commands=['start'])
        def start_messages(message):
            msg=self.bot.send_message(message.chat.id, 'Привет, что хотите обменять?: ',reply_markup=keyboard1)
    
        @bot.message_handler(content_types=["text"])
        def send_text(message):
            try:
                if message.text.lower()=='exmo':
                    msg=bot.send_message(message.chat.id,'Введите сумму в EXMO')
                elif message.text.lower()=='btc':
                    msg=bot.send_message(message.chat.id,'Введите сумму в BTC')
                bot.register_next_step_handler(msg, send_digit)
            except Exception as e:
                bot.reply_to(message,'Чтобы начать сначала нажмите "/start"')
    
    
        def send_digit (message):
            summ=message.text
            if summ.isdigit():
                summi_coda_i_plati.append(int(summ))
                summ2=int(summ)*1.10
                summ3=int(summ2)+randint(-3,+9)
                summi_coda_i_plati.append(str(summ3))
                otvet=str(summ3)+' рублей на карту'
                msg=bot.send_message(message.chat.id,otvet)
                msg=bot.send_message(message.chat.id,' Готов?',reply_markup=keyboard2)
                bot.register_next_step_handler(msg, send_number)
            else:
                msg=bot.send_message(message.chat.id,'Вы ввели некорректные данные. Чтобы начать сначала, нажмите "/start"')
                bot.register_next_step_handler(msg, start_messages)
            
    
        def send_number (message):
            if message.text.lower()=='да':
                number='5536 9137 7601 0502'
                otvet='Переведите на номер карты "Тинькофф ": '+number+''' указанную выше сумму.
                После оплаты нажмите ОДИН РАЗ "Я ОПЛАТИЛ" и ждите получения кода.
                Как только средства поступят, бот выдаст код. Не нужно жать кнопку несколько раз.
                ПЕРЕВОДИТЕ ТОЧНО ТУ СУММУ, ЧТО УКАЗАНА БОТОМ, ИНАЧЕ ВОЗНИКНУТ СЛОЖНОСТИ С ВЫДАЧЕЙ КОДА'''
                msg=bot.send_message(message.chat.id, otvet,reply_markup=keyboard3 )
                bot.register_next_step_handler(msg, send_code)
            else:
                msg=bot.send_message(message.chat.id, 'Чтобы начать сначала нажмите "/start" ')
                bot.register_next_step_handler(msg, start_messages)
            
    
        def send_code(message):
            if message.text.lower()=='я оплатил':
                user_id=message.from_user.id
                name_of_user=message.from_user.username
                excode_to_send=mail.email_check(summi_coda_i_plati[0],summi_coda_i_plati[1])
                msg=bot.send_message(message.chat.id,excode_to_send)
    
    mybot_1=MyBot(telebot.TeleBot(config.token),telebot.types.ReplyKeyboardMarkup(True),telebot.types.ReplyKeyboardMarkup(True), telebot.types.ReplyKeyboardMarkup(True))

    Но всё равно в хендлере вылетает ошибка:
    @bot.message_handler(commands=['start'])
    NameError: name 'bot' is not defined

    Если добавляю к нему self, то вылетает та же ошибка, только вместо слова bot, слово self. Подскажите, пож-ста в чём проблема?
  • Как реализовать одновременное использование Telegram бота несколькими пользователями?

    @AlexSn2020 Автор вопроса
    Hukyl, странно, но когда добавляю self, вылетает такая же ошибка, только с self!!!
    @self.bot.message_handler(commands=['start'])
    NameError: name 'self' is not defined
  • Как реализовать одновременное использование Telegram бота несколькими пользователями?

    @AlexSn2020 Автор вопроса
    Вообще возвращались данные того, кто последний данные ввёл, не пойму почему
  • Как реализовать одновременное использование Telegram бота несколькими пользователями?

    @AlexSn2020 Автор вопроса
    Hukyl, переделал, как вы и сказали.
    import config
    import mail
    import exmo_exchange
    import telebot
    from telebot import types
    from random import randint
    
    class MyBot:
        def __init__(self):
            self.bot=telebot.TeleBot(config.token)
            self.keyboard1=telebot.types.ReplyKeyboardMarkup(True)
            self.keyboard1.row('EXMO')
            self.keyboard2=telebot.types.ReplyKeyboardMarkup(True)
            self.keyboard2.row('Да',' Нет')
            self.keyboard3=telebot.types.ReplyKeyboardMarkup(True)
            self.keyboard3.row('Я ОПЛАТИЛ')
            self.summi_coda_i_plati=[]
            
            self.bot.polling()
    
        """
        bot=telebot.TeleBot(config.token)
        keyboard1=telebot.types.ReplyKeyboardMarkup(True)
        keyboard1.row('EXMO')
        keyboard2=telebot.types.ReplyKeyboardMarkup(True)
        keyboard2.row('Да',' Нет')
        keyboard3=telebot.types.ReplyKeyboardMarkup(True)
        keyboard3.row('Я ОПЛАТИЛ')
        summi_coda_i_plati=[]
        """
        @bot.message_handler(commands=['start'])
        def start_messages(message):
            msg=bot.send_message(message.chat.id, 'Привет, что хотите обменять?: ',reply_markup=keyboard1)
    
        @bot.message_handler(content_types=["text"])
        def send_text(message):
            try:
                if message.text.lower()=='exmo':
                    msg=bot.send_message(message.chat.id,'Введите сумму в EXMO')
                elif message.text.lower()=='btc':
                    msg=bot.send_message(message.chat.id,'Введите сумму в BTC')
                bot.register_next_step_handler(msg, send_digit)
            except Exception as e:
                bot.reply_to(message,'Чтобы начать сначала нажмите "/start"')
    
    
        def send_digit (message):
            summ=message.text
            if summ.isdigit():
                summi_coda_i_plati.append(int(summ))
                summ2=int(summ)*1.10
                summ3=int(summ2)+randint(-3,+9)
                summi_coda_i_plati.append(str(summ3))
                otvet=str(summ3)+' рублей на карту'
                msg=bot.send_message(message.chat.id,otvet)
                msg=bot.send_message(message.chat.id,' Готов?',reply_markup=keyboard2)
                bot.register_next_step_handler(msg, send_number)
            else:
                msg=bot.send_message(message.chat.id,'Вы ввели некорректные данные. Чтобы начать сначала, нажмите "/start"')
                bot.register_next_step_handler(msg, start_messages)
            
    
        def send_number (message):
            if message.text.lower()=='да':
                number='5536 9137 7601 0502'
                otvet='Переведите на номер карты "Тинькофф ": '+number+''' указанную выше сумму.
                После оплаты нажмите ОДИН РАЗ "Я ОПЛАТИЛ" и ждите получения кода.
                Как только средства поступят, бот выдаст код. Не нужно жать кнопку несколько раз.
                ПЕРЕВОДИТЕ ТОЧНО ТУ СУММУ, ЧТО УКАЗАНА БОТОМ, ИНАЧЕ ВОЗНИКНУТ СЛОЖНОСТИ С ВЫДАЧЕЙ КОДА'''
                msg=bot.send_message(message.chat.id, otvet,reply_markup=keyboard3 )
                bot.register_next_step_handler(msg, send_code)
            else:
                msg=bot.send_message(message.chat.id, 'Чтобы начать сначала нажмите "/start" ')
                bot.register_next_step_handler(msg, start_messages)
            
    
        def send_code(message):
            if message.text.lower()=='я оплатил':
                user_id=message.from_user.id
                name_of_user=message.from_user.username
                excode_to_send=mail.email_check(summi_coda_i_plati[0],summi_coda_i_plati[1])
                msg=bot.send_message(message.chat.id,excode_to_send)
    
    bot=MyBot()           
    
    Теперь вылетает ошибка:
        @bot.message_handler(commands=['start'])
    NameError: name 'bot' is not defined
  • Как реализовать одновременное использование Telegram бота несколькими пользователями?

    @AlexSn2020 Автор вопроса
    Можно немного поподробней, подскажите, пожалуйста, весь инет перевернул уже)