Top.Mail.Ru
Ответы

Хелпа пж мучиюсь уже 2 часа

import logging
import random
from telegram.ext import Updater, CommandHandler, MessageHandler, Filters

# Устанавливаем уровень логирования
logging.basicConfig(format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
level=logging.INFO)

logger = logging.getLogger(__name__)

# Функция, которая будет вызываться при команде /start
def start(update, context):
update.message.reply_text('Привет! Я бот, который отвечает случайно "да" или "нет".')

# Функция, которая будет вызываться при отправке сообщения
def reply_yes_or_no(update, context):
response = random.choice(["да", "нет"])
update.message.reply_text(response)

def main():
# Токен вашего бота
updater = Updater("7097314104:AAHrjcztGSQr3yrMAPN2vPhADD4P_h-IUlc", use_context=True)

dp = updater.dispatcher

# Добавляем обработчик команды /start
dp.add_handler(CommandHandler("start", start))

# Добавляем обработчик для ответа на любые сообщения
dp.add_handler(MessageHandler(Filters.text & ~Filters.command, reply_yes_or_no))

# Запускаем бота
updater.start_polling()

# Останавливаем бота при нажатии Ctrl+C
updater.idle()

if __name__ == '__main__':
main()

решите:
Traceback (most recent call last):
File "C:\Users\lpk\Desktop\proekt.py", line 3, in <module>
from telegram.ext import Updater, CommandHandler, MessageHandler, Filters
ImportError: cannot import name 'Filters' from 'telegram.ext' (C:\Users\lpk\AppData\Local\Programs\Python\Python312\Lib\site-packages\telegram\ext\__init__.py). Did you mean: 'filters'?

По дате
По Рейтингу
Аватар пользователя
Просветленный

Ошибка, с которой ты столкнулся, указывает на проблему с импортом модуля Filters. В Python регистр букв имеет значение, поэтому Filters и filters — это разные имена. В твоём случае нужно использовать filters с маленькой буквы. Вот исправленный фрагмент кода:

import logging
import random
from telegram.ext import Updater, CommandHandler, MessageHandler, filters

# Устанавливаем уровень логирования
logging.basicConfig(format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
level=logging.INFO)

logger = logging.getLogger(__name__)

# Функция, которая будет вызываться при команде /start
def start(update, context):
update.message.reply_text('Привет! Я бот, который отвечает случайно "да" или "нет".')

# Функция, которая будет вызываться при отправке сообщения
def reply_yes_or_no(update, context):
response = random.choice(["да", "нет"])
update.message.reply_text(response)

def main():
# Токен вашего бота
updater = Updater("ТВОЙ_ТОКЕН_ЗДЕСЬ", use_context=True)

dp = updater.dispatcher

# Добавляем обработчик команды /start
dp.add_handler(CommandHandler("start", start))

# Добавляем обработчик для ответа на любые сообщения
dp.add_handler(MessageHandler(filters.text & ~filters.command, reply_yes_or_no))

# Запускаем бота
updater.start_polling()

# Останавливаем бота при нажатии Ctrl+C
updater.idle()

if __name__ == '__main__':
main()
Обрати внимание, что я заменил Filters на filters и добавил отступы в функциях для правильной структуры кода. Также не забудь заменить "ТВОЙ_ТОКЕН_ЗДЕСЬ" на реальный токен твоего бота.