Ali_Pythonist
Member
Привет у меня есть телеграмм бот по определённой команде он запускает бесконечный цикл который проверяет текущее время с временем из базы данных но у меня проблема в том что если я запускаю эту функцию то весь функционал бота становится недоступным как мне запустить эту функцию в отдельном потоке что бы при её работе был доступен весь основной функционал бота код ниже.
Вот код с диспетчером.
Вот код с файла bot_send_photo
Python:
import asyncio
import logging
import sys
from Routers.bot_send_photo import hello
from aiogram import Bot, Dispatcher
from aiogram.filters import CommandStart
from aiogram.types import Message
from token_bot import token
from threading import Thread
from Routers.add_dell_all_photo import bot_router_photo
from Routers.bot_send_photo import bot_router_send_photo
from Keyboard.keyboard_optional import admin_optional
bot = Bot(token=token)
dp = Dispatcher()
dp.include_routers(bot_router_photo, bot_router_send_photo)
@dp.message(CommandStart())
async def bot_start(message: Message):
await message.answer(text='Привет вот функции для администратора.', reply_markup=admin_optional)
async def main():
await bot.delete_webhook(drop_pending_updates=True)
await dp.start_polling(bot)
if __name__ == '__main__':
logging.basicConfig(
level=logging.INFO,
stream=sys.stdout,
format="%(asctime)s - [%(levelname)s] - %(name)s - "
"(%(filename)s).%(funcName)s(%(lineno)d) - %(message)s"
)
asyncio.run(main())
Вот код с файла bot_send_photo
Python:
import sqlite3 as sq
import datetime
from time import sleep
from aiogram import Bot
from aiogram.filters import Command
from aiogram.types import Message
from aiogram import Router
from aiogram.types import BufferedInputFile
from threading import Thread
from FiltersBot.chat_type import ChatTypeFilter
from FiltersBot.admin_filter import IsAdmin
bot_router_send_photo = Router()
bot_router_send_photo.message.filter(ChatTypeFilter(chat_types=['private']))
lst_admin = [6320259544]
@bot_router_send_photo.message(Command("remind"), IsAdmin(lst_admin))
async def hello(message: Message, bot: Bot):
await message.answer(text='Планировщик запущен.')
with sq.connect('sq_bot.db') as time_photo:
id = -4152120133
cur = time_photo.cursor()
time = cur.execute("""SELECT time FROM data_photo""").fetchall()
photo = cur.execute("""SELECT photo FROM data_photo""").fetchall()
photo_name = cur.execute("""SELECT photo_name FROM data_photo""").fetchall()
while True:
time_now = datetime.datetime.now().time()
time_string = f'{time_now.hour}:{time_now.minute}'
for n, p in zip(photo_name, photo):
for i in range(len(time)):
if time_string in time[i][0]:
await bot.send_photo(chat_id=id, photo=BufferedInputFile(filename=n[0], file=p[0]))
sleep(60)