Выдаётся ошибка RunTimeWarning

Рейтинг: 0Ответов: 1Опубликовано: 20.04.2023

Ошибка:

RuntimeWarning: coroutine 'Dispatcher.start_polling' was never awaited dp.start_polling(dp)

Код:

import requests
import aiogram.utils.markdown as md
from aiogram import Bot, Dispatcher, types
from aiogram.types import ParseMode

# Вставьте свой API-токен от BotFather
API_TOKEN = ''

# Инициализация бота и диспетчера
bot = Bot(token=API_TOKEN)
dp = Dispatcher(bot)

# Обработчик команды /start
@dp.message_handler(commands=['start'])
async def send_welcome(message: types.Message):
    await message.reply("Конвертор, писать по примеру: 'amount currency_from currency_to'")

# Обработчик всех сообщений, кроме команд
@dp.message_handler()
async def convert_currency(message: types.Message):
    try:
        amount, from_currency, to_currency = message.text.split()
        url = f"https://api.exchangerate-api.com/v4/latest/{from_currency}"
        response = requests.get(url)
        data = response.json()
        exchange_rate = data["rates"][to_currency]
        converted_amount = round(float(amount) * exchange_rate, 2)
        await message.reply(md.text(f"{amount} {from_currency} is equal to {converted_amount} {to_currency}"), parse_mode=ParseMode.MARKDOWN)
    except:
        await message.reply("Invalid input. Please try again.")

if __name__ == '__main__':
    dp.start_polling(dp)

Ответы

▲ 1

Попробуйте так:

import requests
import aiogram.utils.markdown as md
from aiogram import Bot, Dispatcher, types
from aiogram.types import ParseMode
from aiogram.utils import executor

# Вставьте свой API-токен от BotFather
API_TOKEN = ''

# Инициализация бота и диспетчера
bot = Bot(token=API_TOKEN)
dp = Dispatcher(bot)


# Обработчик команды /start
@dp.message_handler(commands=['start'])
async def send_welcome(message: types.Message):
    await message.reply("Конвертор, писать по примеру: 'amount currency_from currency_to'")


# Обработчик всех сообщений, кроме команд
@dp.message_handler()
async def convert_currency(message: types.Message):
    try:
        amount, from_currency, to_currency = message.text.split()
        url = f"https://api.exchangerate-api.com/v4/latest/{from_currency}"
        response = requests.get(url)
        data = response.json()
        exchange_rate = data["rates"][to_currency]
        converted_amount = round(float(amount) * exchange_rate, 2)
        await message.reply(md.text(f"{amount} {from_currency} is equal to {converted_amount} {to_currency}"), parse_mode=ParseMode.MARKDOWN)
    except:
        await message.reply("Invalid input. Please try again.")


if __name__ == '__main__':
    executor.start_polling(dp)

Результат:

введите сюда описание изображения