Top.Mail.Ru
Ответы

AttributeError: module 'telegram.ext.filters' has no attribute 'TEXT' гении с ответов майл, помогите пожалуйста!

гении ответов майл, помогите пожалуйста!
Уже в какой раз пытаюсь фиксануть переустановкой и откатами библиотеки python-telegram-bot, может кто помочь? может проблема кроется в коде, которую я не вижу:

from telegram import Update
from telegram.ext import Updater, CommandHandler, MessageHandler, filters, CallbackContext

TOKEN = 'мой токен'
ADMIN_ID = 'мой админ id'

positions = {}

def scen_command(update: Update, context: CallbackContext):
chat_id = update.effective_ chat.id
user_id = update.effective_ user.id

if not update.message.text.startswith('/'):
update.message.reply_text('Некорректный формат команды.')
return

permissions = ['message', 'media', 'sticker', 'gif', 'poll', 'pin']
positions[user_id] = 'scen'

log_message(user_id, 'scen', context)

update.message.reply_text('Выданы права и должность "scen".')

def voice_command(update: Update, context: CallbackContext):
chat_id = update.effective_ chat.id
user_id = update.effective_ user.id

if not update.message.text.startswith('/'):
update.message.reply_text('Некорректный формат команды.')
return

permissions = ['message', 'media', 'sticker', 'gif', 'poll', 'pin']
positions[user_id] = 'voice'

log_message(user_id, 'voice', context)

update.message.reply_text('Выданы права и должность "voice".')

def message_handler(update: Update, context: CallbackContext):
chat_id = update.effective_ chat.id
user_id = update.effective_ user.id

log_message(user_id, 'message', context)

def log_message(user_id, position, context: CallbackContext):
context.bot .send_message(ADMIN_ID, f'Пользователь {user_id} с должностью {position} отправил сообщение.')

def main():
updater = Updater(TOKEN)
dispatcher = updater.dispatcher

dispatcher.add_handler(CommandHandler('scen', scen_command))
dispatcher.add_handler(CommandHandler('voice', voice_command))

dispatcher.add_handler(MessageHandler(filters.TEXT, message_handler))

updater.start_polling()
updater.idle()

if __name__ == '__main__':
main()

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

Начиная с версии 20 python-telegram-bot, библиотека filters написана строчными буквами, а отдельные фильтры - заглавными. Так что до v13.7 у нас было Filters.text, а с v20 стало filters.TEXT. Возможно, в вашем файле requirements.txt указано python-telegram-bot>=13.4, поэтому либо вы меняете его на python-telegram-bot==13.7, либо вам нужно обновить свой код. Обратите внимание, что это относится также к импорту, до v13.7: from telegram.ext import Filters становится telegram.ext import filters.

Вы можете попробовать обновить свой код, чтобы использовать новый синтаксис, или понизить версию библиотеки до той, которая совместима с вашим кодом. Например, вы можете понизить версию python-telegram-bot до 13.7, выполнив команду: pip install python-telegram-bot==13.7 --force-reinstall.