Синхронная отправка сообщения в aiogram

У меня есть бот aiogram, могу ли я отправить сообщение из другого модуля через этого бота в тг через синхронную функцию?

bot.py

import asyncio
from aiogram import Bot, Dispatcher, types
from aiogram.filters.command import Command
from Bot import config


bot = Bot(token=config.TOKEN)
users_id = []

dp = Dispatcher()


@dp.message(Command("start"))
async def cmd_start(message: types.Message):
    user_id = message.from_user.id
    if user_id not in users_id:
        users_id.append(user_id)
    print(user_id, message.chat.id)
    await message.answer('Программа запущена')


async def main():
    await dp.start_polling(bot)


def run():
    asyncio.run(main())

Другой модуль, где нужно отправлять информацию:

from Bot.bot import bot, users_id
import log
import datetime
from telebot.apihelper import ApiTelegramException
import requests
import time


def create_data_for_send(name, lowest_price, price_item, index_item, info_item, float_item, markup_for_stickers):
    link = f'https://buff.163.com/goods/{index_item}?appid={info_item["appid"]}&classid={info_item["asset_info"]["classid"]}&instanceid={info_item["asset_info"]["instanceid"]}&assetid={info_item["asset_info"]["assetid"]}&contextid=2&sell_order_id={info_item["id"]}'
    item_in_buff_link = f'<a href="{link}">{html.escape(name)}</a>'
    if 'inspect_url' in info_item['asset_info']['info']:
        link_img = info_item['asset_info']['info']['inspect_url']
    else:
        link_img = info_item['asset_info']['info']['icon_url']

    if markup_for_stickers != '' and float_item['text'] != '':
        item_info = {f'-----------------------------------------------------\n'
                     f'Название предмета: {name}\n'
                     f'Float: {float_item["float"]}\n'
                     f'{float_item["text"]}\n'
                     f'Стоимость стикеров: {round(markup_for_stickers[2], 1)} ¥ ({round(markup_for_stickers[2], 1)} руб.)\n'
                     f'-----------------------------------------------------\n'
                     f'Минимальная цена данного предмета: {round(lowest_price, 1)} ¥ ({round(lowest_price, 1)} руб.)\n'
                     f'Цена предмета: {round(price_item, 1)} ¥ ({round(price_item, 1)} руб.)\n'
                     f'-----------------------------------------------------\n'
                     f'Возможная цена продажи: {round(lowest_price, 1) + round(markup_for_stickers[1], 1)} ¥ ({round(lowest_price, 1) + round(markup_for_stickers[1], 1)} руб.)\n'
                     f'Возможная выгода от сделки: {markup_for_stickers[0]}%\n'
                     f'Ссылка на предмет: {item_in_buff_link}\n'
                     f'-----------------------------------------------------'}

    elif markup_for_stickers == '' and float_item['text'] != '':
        item_info = {f'-----------------------------------------------------\n'
                     f'Название предмета: {name}\n'
                     f'Float: {float_item["float"]}\n'
                     f'{float_item["text"]}\n'
                     f'-----------------------------------------------------\n'
                     f'Минимальная цена данного предмета: {round(lowest_price, 1)} ¥ ({round(lowest_price, 1)} руб.)\n'
                     f'Цена предмета: {round(price_item, 1)} ¥ ({round(price_item, 1)} руб.)\n'
                     f'Ссылка на предмет: {item_in_buff_link}\n'
                     f'-----------------------------------------------------'}

    elif markup_for_stickers != '' and float_item['text'] == '':
        item_info = {f'-----------------------------------------------------\n'
                     f'Название предмета: {name}\n'
                     f'Float: {float_item["float"]}\n'
                     f'Стоимость стикеров: {round(markup_for_stickers[2], 1)} ¥ ({round(markup_for_stickers[2], 1)} руб.)\n'
                     f'-----------------------------------------------------\n'
                     f'Минимальная цена данного предмета: {round(lowest_price, 1)} ¥ ({round(lowest_price, 1)} руб.)\n'
                     f'Цена предмета: {round(price_item, 1)} ¥ ({round(price_item, 1)} руб.)\n'
                     f'-----------------------------------------------------\n'
                     f'Возможная цена продажи: {round(lowest_price, 1) + round(markup_for_stickers[1], 1)} ¥ ({round(lowest_price, 1) + round(markup_for_stickers[1], 1)} руб.)\n'
                     f'Возможная выгода от сделки: {markup_for_stickers[0]}%\n'
                     f'Ссылка на предмет: {item_in_buff_link}\n'
                     f'-----------------------------------------------------'}
    if link not in sent_items and (markup_for_stickers != '' or float_item['text'] != ''):
        for user_id in users_id:
            for y in range(5):
                try:
                    bot.send_photo(chat_id=user_id,
                                   photo=link_img,
                                   caption=item_info,
                                   parse_mode='HTML')
                    print('Информация отправлена')
                    current_time = datetime.datetime.now().strftime("%H:%M:%S")
                    log.data_log.append(f'{current_time} Информация отправлена')
                    sent_items.append(link)
                    break
                except requests.exceptions.ConnectionError as e:
                    print(f"Ошибка соединения при отправке фото: {e}")
                    current_time = datetime.datetime.now().strftime("%H:%M:%S")
                    log.data_log.append(f'{current_time} Ошибка соединения при отправке фото: {e}')
                    time.sleep(5)
                except ApiTelegramException as e:
                    if e.error_code == 403:
                        print(f"Бот был заблокирован пользователем {user_id}. Можете предпринять необходимые действия.")

Ответы (0 шт):