Не работает 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())
В новых версиях aiogram (3.x) изменилась инициализация Dispatcher. Вот исправленный код:
Итоговый исправленный фрагмент:
bot = Bot(token=TOKEN)
dp = Dispatcher()
# ... обработчики ...
async def main():
await dp.start_polling(bot)
asyncio.run(main())
Это должно устранить ошибку.
А полный код