Пишу бота для телеграм, который будет отслеживать самые волатильные криптовалютные пары на бирже Bybit.
Проблема заключается в том, что при импорте библиотек появляется ошибка из заголовка вопроса.
Версии
Python - 3.12.2
AIOGRAM - 3.7.0
REQUESTS - 2.32.3
MATHPLOTLIB - 3.9.0
aiohttp - 3.9.5
Полная ошибка
Traceback (most recent call last):
File "c:\Users\OtterAndFinek\Desktop\ByBitCheckerBot\ByBitCheckerBot\bot.py", line 2, in <module>
from aiogram.utils import executor
ImportError: cannot import name 'executor' from 'aiogram.utils' (C:\Users\OtterAndFinek\Desktop\ByBitCheckerBot\.venv\Lib\site-packages\aiogram\utils\__init__.py)
Код
from aiogram import Bot, Dispatcher, types
from aiogram.utils import executor
from config import TELEGRAM_API_TOKEN, TELEGRAM_CHANNEL_ID
from bybit_api import get_tickers, get_volatility
from chart import create_chart
import io
bot = Bot(token=TELEGRAM_API_TOKEN)
dp = Dispatcher(bot)
# Словарь для хранения последних цен для каждой пары
last_prices = {}
async def send_volatility_alert():
tickers = get_tickers()
volatile_pairs = get_volatility(tickers)
for pair in volatile_pairs:
symbol = pair['symbol']
price_change = pair['priceChangePercent']
current_price = float(pair['lastPrice'])
message = f' {symbol} изменился на {price_change:.2f}%'
# Инициализация последней цены, если еще нет данных
if symbol not in last_prices:
last_prices[symbol] = []
# Добавление текущей цены в список последних цен
last_prices[symbol].append(current_price)
# Ограничение длины списка последних цен
if len(last_prices[symbol]) > 50:
last_prices[symbol] = last_prices[symbol][-50:]
# Генерация графика
timestamps = list(range(len(last_prices[symbol])))
chart = create_chart(timestamps, last_prices[symbol], symbol)
# Отправка сообщения и графика
await bot.send_message(TELEGRAM_CHANNEL_ID, message)
await bot.send_photo(TELEGRAM_CHANNEL_ID, photo=chart)
async def on_startup(dp):
await send_volatility_alert()
if __name__ == '__main__':
executor.start_polling(dp, on_startup=on_startup)