Хелпа пж мучиюсь уже 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 и добавил отступы в функциях для правильной структуры кода. Также не забудь заменить "ТВОЙ_ТОКЕН_ЗДЕСЬ" на реальный токен твоего бота.