Синхронная отправка сообщения в 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}. Можете предпринять необходимые действия.")