Выдает ошибку NameError: name 'message' is not defined`

Рейтинг: 0Ответов: 1Опубликовано: 13.04.2023

Не понимаю, почему не работает бот тг.

Мой код выдает ошибку:

line 37, in <module>
    bot.send_message(message.chat.id, answer)
                     ^^^^^^^
NameError: name 'message' is not defined

Что я сделала не так? Что мне надо исправить? Пожалуйста с примером - я нуб(

import telebot
import random
from telebot import types
from collections import deque

def get_first_element_in_the_queue(array: list) -> str:
    first_element = array[0]
    array.rotate(-1)
    return first_element

f = open('/Users/ /ukrwrite/ch.txt', 'r', encoding='UTF-8')
ch = f.read().split('\n')
f.close()

f = open('/Users/ /ukrwrite/useful.txt', 'r', encoding='UTF-8')
useful = f.read().split('\n')
f.close()


f = open('/Users/ /ukrwrite/ra.txt', 'r', encoding='UTF-8')
ra = f.read().split('\n')
f.close()

ch_q = deque(ch)
useful_q = deque(useful)
ra_q = deque(ra)
bot = telebot.TeleBot('')
@bot.message_handler(content_types=["text"])
def handle_text(message):
    if message.text.strip() == 'челендж':
        answer = get_first_element_in_the_queue(ch_q)
    elif message.text.strip() == 'корисне':
        answer = get_first_element_in_the_queue(useful_q)
    elif message.text.strip() == 'рекомендовані авторки':
        answer = get_first_element_in_the_queue(ra_q)

bot.send_message(message.chat.id, answer)
bot.polling(none_stop=True, interval=0)

Ответы

▲ 1

Переменная message не объявлена, вы передаёте в bot.send_message несуществующий аргумент.

Возможное решение: объявить функцию и передать в неё message как аргумент

UPD

2 вариант: переместить строку с отправкой сообщения в функцию handle_text, для того, что бы она имела доступ к переменной message