Top.Mail.Ru
Ответы
Аватар пользователя
Изменено
Аватар пользователя
Аватар пользователя
Аватар пользователя
Программирование
+3

ImportError: cannot import name 'Filters' from 'telegram.ext'

Делаю бота была куча ошибок и т.д. но я уже их решл, появилась последняя ошибка ответ на которую я найти не могу(

C:\Users\...>python bot.py

Traceback (most recent call last):

File "bot.py", line 2, in <module>

from telegram.ext import Updater, CommandHandler, MessageHandler, Filters, CallbackContext

ImportError: cannot import name 'Filters' from 'telegram.ext' (C:\Users\...\AppData\Roaming\Python\Python38\site-packages\telegram\ext\__init__.py)

Cкрипт бота:


123456789101112131415161718192021222324252627282930313233
 from telegram import Update 
from telegram.ext import Updater, CommandHandler, MessageHandler, filters, CallbackContext 
from chatterbot import ChatBot 
from chatterbot.trainers import ChatterBotCorpusTrainer 
 
# Создаем объект чатбота 
bot = ChatBot('MyBot') 
 
# Добавляем тренера 
trainer = ChatterBotCorpusTrainer(bot) 
trainer.train("chatterbot.corpus.english")  # обучаем базовым фразам 
 
# Обработчик команды /start 
def start(update: Update, context: CallbackContext) -> None: 
    update.message.reply_text('Привет! Я бот с искусственным интеллектом. Чем могу помочь?') 
 
# Обработчик сообщений 
def reply(update: Update, context: CallbackContext) -> None: 
    response = bot.get_response(update.message.text) 
    update.message.reply_text(response) 
 
def main() -> None: 
    updater = Updater("6899537087:AAGSF5PlqkCiexKtpmVsd_0sl7aouCem3Gk", use_context=True) 
 
    dispatcher = updater.dispatcher 
    dispatcher.add_handler(CommandHandler("start", start)) 
    dispatcher.add_handler(MessageHandler(filters.text & ~filters.command, reply)) 
 
    updater.start_polling() 
    updater.idle() 
 
if __name__ == '__main__': 
    main() 
Дополнен

вроде исправил с помощью ии но оно видит ошибку из неоткуда...

Дополнен

и снова выдает такую ошибку

Дополнен

забыл упомянуть что немного поменял код

from telegram import Update
from telegram.ext import Updater, CommandHandler, MessageHandler, filters, CallbackContext
from chatterbot import ChatBot
from chatterbot.trainers import ChatterBotCorpusTrainer

# Создаем объект чатбота
bot = ChatBot('MyBot')

# Добавляем тренера
trainer = ChatterBotCorpusTrainer(bot)
trainer.train("chatterbot.corpus.english") # обучаем базовым фразам

# Обработчик команды /start
def start(update: Update, context: CallbackContext) -> None:
nlp = spacy.load("en_core_web_sm")
update.message.reply_text('Привет! Я бот с искусственным интеллектом. Чем могу помочь?')

# Обработчик сообщений
def reply(update: Update, context: CallbackContext) -> None:
response = bot.get_response(update.message.text)
update.message.reply_text(response)

def main() -> None:
updater = Updater("6899537087:AAGSF5PlqkCiexKtpmVsd_0sl7aouCem3Gk", use_context=True)

dispatcher = updater.dispatcher
dispatcher.add_handler(CommandHandler("start", start))
dispatcher.add_handler(MessageHandler(filters.text & ~filters.command, reply))

updater.start_polling()
updater.idle()

if __name__ == '__main__':
main()

Дополнен

проблема не решена...

По дате
По рейтингу
Аватар пользователя
Новичок

Ты хоть скачал python-telegram-bot? Если да попробуй более старые версии может Filters просто убрали из библиотеки.

Аватар пользователя
Ученик

Проблема решена ! (это 2-ой аккаунт)

чтобы устранить я сделал следующее:

1. в консоли выполнил python -m spacy download en_core_web_sm --user
2. поменял строку кода:

12
 def main() -> None:  
updater = Updater("6899537087:AAGSF5PlqkCiexKtpmVsd_0sl7aouCem3Gk", use_context=True)  

на

12
 def main() -> None: 
    updater = Updater("6899537087:AAGSF5PlqkCiexKtpmVsd_0sl7aouCem3Gk") 

т.е. удалил , use_context=True
3. в консоли выполнил: pip uninstall python-telegram-bot
4. в консоли: pip install python-telegram-bot==12
5. заменил кусок когда в "C:\Users\...\AppData\Roaming\Python\Python38\site-packages\chatterbot\tagging.py" а именно:

13 строчку (была 1 после замены стало 3)

1234
         if self.language.ISO_639_1.lower() == 'en': 
            self.nlp = spacy.load('en_core_web_sm') 
        else: 
            self.nlp = spacy.load(self.language.ISO_639_1.lower()) 

Изначальная строчка была потеряна


Однако после этого получилась новая ошибка подробнее: https://otvet.mail.ru/question/236766187