Top.Mail.Ru
Ответы

Не работает telegram бот на python

бот выдаёт ошибку
TypeError: Dispatcher.__init__() takes 1 positional argument but 2 were given
у меня строчка кода dp = Dispatcher(bot)
как сделать один аргумент или убрать ошибку?

Дополнен

полный код import os

import pytube

from aiogram import Bot, Dispatcher, types

import asyncio


TOKEN = "написан"



bot = Bot(token=TOKEN)

dp = Dispatcher(bot)



def download_youtube_video(url):

"""Скачивает видео с YouTube и возвращает путь к файлу"""

yt = pytube.YouTube(url)

stream = yt.streams.get_highest_resolution()

file_path = stream.download(output_path="downloads/")

return file_path


@dp.message_handler(commands=["start"])

async def start(message: types.Message):

await message.reply("Привет! Отправь мне ссылку на YouTube-видео, и я скачаю его для тебя.")



@dp.message_handler()

async def handle_message(message: types.Message):

url = message.text

await message.reply("⏳ Загружаю видео...")

video_path = download_youtube_video(url)

await message.reply_document(types.InputFile(video_path))

os.remove(video_path)





async def main():

await dp.start_polling()



asyncio.run(main())

По дате
По рейтингу
Аватар пользователя
Новичок
4мес

В новых версиях aiogram (3.x) изменилась инициализация Dispatcher. Вот исправленный код:

Итоговый исправленный фрагмент:

123456789
 bot = Bot(token=TOKEN) 
dp = Dispatcher() 
 
# ... обработчики ... 
 
async def main(): 
    await dp.start_polling(bot) 
 
asyncio.run(main()) 



Это должно устранить ошибку.

Аватар пользователя
Мыслитель
4мес

А полный код