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.