Python Telebot. Не сохраняется значение в переменную. Сможете помочь?

Ссылка скопирована
1 ответ

Когда пользователь пишет боту любое сообщение, переменная 'a' должна принимать значение '1', но при выводе этой переменной в конце кода, ее значение остается None. Недавно стал изучать написание ботов и столкнулся с такой проблемой.

a = None     @bot.message_handler(content_types='text') def adw(message):     a = 1      print(a)

a = None @bot.message_handler(content_types='text') def adw(message): a = 1 print(a)

Дополнительно:

Ну так ты функцию adw() не вызываешь, по этому а = НОНЕ

  • Евгений Залецкий, функция будет вызвана когда бот получит текстовое сообщение.
  • Тут тысячи раз приходили с этим вопросом, но главная проблема не в этом.
    А в том, что вам не по уровню боты. Это кажется, что они простые.
    Они весьма не простые для начинающих. И авторы роликов в ютьюбе врут нагло. Вам надо изучить много всего (язык, алгоритмы, ооп, базы данных, структуры данных, ну и на сладкое освоить асинхронность и многопоточность).
    После этого будет достаточно знаний для ботов.
  • Ответы:

    Ну так ты функцию adw() не вызываешь, по этому а = НОНЕ

    • a = None     @bot.message_handler(content_types='text') def adw(message):     a = 1    adw()   print(a)

      a = None @bot.message_handler(content_types='text') def adw(message): a = 1 adw() print(a)

      Можешь попробовать так

    • Евгений Залецкий, Появляется ошибка name 'a' is assigned to before global declaration
    • a = None
      #@bot.message_handler(content_types='text')
      def adw(a):
      a = 1
      return a

      print(adw(a))

    Читай, как работают глобальные переменные (ключевое слово global) в питоне.

    Ты сейчас создаёшь в обработчике события локальную переменную a, которая, разумеется, пропадает, когда обработчик завершается.

    Ну и да, я исхожу из того, что у тебя дальше есть код по запуску бота, которому ты привязал этот обработчик.

    Используй global a, чтобы глобально изменить переменную. Но глобалы - это кал. Не рекомендуется использовать их. А щас ты просто создаешь локальную переменную а

    Нужно решить такую задачу?

    Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

    Заказать помощь
    Лучший ответ
    1
    Никита Орлов Ответ

    Для того чтобы сохранить значение в переменную в Python Telebot, необходимо правильно обработать данные, которые приходят от пользователя. Вот пример кода, который позволит сохранить значение в переменную:

    from telebot import TeleBot
     
    bot = TeleBot("YOUR_API_TOKEN")
     
    @bot.message_handler(func=lambda message: True)
    def handle_message(message):
        chat_id = message.chat.id
        text = message.text
     
        # Сохраняем значение в переменную
        global saved_value
        saved_value = text
     
        bot.send_message(chat_id, f"Значение {saved_value} сохранено успешно!")
     
    bot.polling()

    from telebot import TeleBot bot = TeleBot("YOUR_API_TOKEN") @bot.message_handler(func=lambda message: True) def handle_message(message): chat_id = message.chat.id text = message.text # Сохраняем значение в переменную global saved_value saved_value = text bot.send_message(chat_id, f"Значение {saved_value} сохранено успешно!") bot.polling()

    В этом примере, мы обрабатываем сообщения, которые приходят от пользователя, и сохраняем значение в переменную saved_value. Обратите внимание на использование ключевого слова global перед объявлением переменной saved_value, чтобы она была доступна внутри функции handle_message. Теперь значение, которое приходит от пользователя, будет сохраняться в эту переменную.

    Не забудьте заменить "YOUR_API_TOKEN" на свой токен бота. Надеюсь, этот пример поможет вам сохранить значение в переменную при использовании Python Telebot. Если у вас возникнут дополнительные вопросы, не стесняйтесь задавать!

    Другие ответы (0)

    Пока нет других ответов. Будьте первым, кто поможет автору.

    Ответить на вопрос

    комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *

    Вам также может быть интересно