Top.Mail.Ru
Ответы

Помогите с ошибкой в коде.

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
 Почему то выдает ошибку:
 Возникло исключение: TypeError 
Updater.__init__() missing 1 required positional argument: 'update_queue' 
  File "D:\Илья\Программы для Код будущего\Случайные картинки природы.py", line 35, in main 
    updater =Updater(TOKEN) 
             ^^^^^^^^^^^^^^ 
  File "D:\Илья\Программы для Код будущего\Случайные картинки природы.py", line 50, in <module> 
    main() 
TypeError: Updater.__init__() missing 1 required positional argument: 'update_queue'


import os
import random
import requests
from telegram import Update
from telegram.ext import Updater, CommandHandler, CallbackContext

# Ваш токен бота
TOKEN = '7167582863:AAF0fM2TbZNVCySBmEWBzbZWosZBkLXmCWs'

# Функция для получения случайной фотографии природы
def get_random_nature_photo():
    # URL для получения случайного изображения с Unsplash API
    url = "https://source.unsplash.com/featured/?nature"

    # Получаем изображение по URL
    response = requests.get(url)
    
    if response.status_code == 200:
        return response.url
    else:
        return None

# Функция-обработчик команды /nature
def nature(update: Update, context: CallbackContext) -> None:
    photo_url = get_random_nature_photo()
    
    if photo_url:
        context.bot.send_photo(chat_id=update.effective_chat.id, photo=photo_url)
    else:
        update.message.reply_text("Не удалось получить изображение. Попробуйте позже.")

# Основная функция
def main():
    # Создаем объект Updater и передаем ему токен
    updater =Updater(TOKEN)
    
    # Получаем диспетчер для регистрации обработчиков
    dp = updater.dispatcher
    
    # Регистрация обработчика команды /nature
    dp.add_handler(CommandHandler("nature", nature))
    
    # Запускаем бота
    updater.start_polling()
    
    # Ожидаем завершения
    updater.idle()

if __name__ == '__main__':
    main()
 
По дате
По рейтингу
Аватар пользователя
Новичок
7мес

Ну так открой документацию на telegram.ext и посмотри, сколько параметров должен иметь вызов Updater. Тебе же прямым английским языком пишут, что отсутствует обязательный параметр. Т.е. одного только TOKEN в вызове Updater(TOKEN) недостаточно, должно быть что-то ещё.

Аватар пользователя
Оракул
7мес
12345678910111213141516171819202122232425262728293031323334353637383940414243444546
 import os 
import random 
import requests 
from telegram import Update 
from telegram.ext import Application, CommandHandler, ContextTypes 
 
# Ваш токен бота 
TOKEN = '7167582863:AAF0fM2TbZNVCySBmEWBzbZWosZBkLXmCWs' 
 
# Функция для получения случайной фотографии природы 
def get_random_nature_photo(): 
    # URL для получения случайного изображения с Unsplash API 
    url = "" 
 
    # Получаем изображение по URL 
    response = requests.get(url) 
    
    if response.status_code == 200: 
        return response.url 
    else: 
        return None 
 
# Функция-обработчик команды /nature 
async def nature(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None: 
    photo_url = get_random_nature_photo() 
    
    if photo_url: 
        await update.message.reply_photo(photo=photo_url) 
    else: 
        await update.message.reply_text("Не удалось получить изображение. Попробуйте позже.") 
 
# Основная функция 
async def main(): 
    # Создаем приложение 
    application = Application.builder().token(TOKEN).build() 
    
    # Регистрация обработчика команды /nature 
    application.add_handler(CommandHandler("nature", nature)) 
    
    # Запускаем бота 
    await application.run_polling() 
 
if __name__ == '__main__': 
    import asyncio 
    asyncio.run(main()) 
 
Аватар пользователя
Ученик
7мес

токен тг бота спалил

Аватар пользователя
Мудрец
7мес

Убедитесь, что вы установили нужную версию библиотеки python-telegram-bot. Вы можете сделать это с помощью команды:

12
 pip install python-telegram-bot --upgrade