Задать вопрос
@RulesOfNature

Aiogram бот засыпает, как решить данную проблему?

В конце скрипта у меня запускается данный код.
if __name__ == '__main__':
	loop = asyncio.get_event_loop()
	loop.create_task(main())
	executor.start_polling(dp)

Всё работает хорошо, но если при запуске скрипта не написать боту любое сообщение, то он попросту уснёт и перестанет реагировать на что либо. Бесконечный цикл
loop = asyncio.get_event_loop() и loop.create_task(main())
продолжает работать.
Для желающих узнать что находится в main(), смотреть код ниже.
async def main():
	url = sock
	try:
		async with websockets.connect(url) as client:
			while True:
				try:
					data = json.loads(await client.recv())
					print('Отправляю сообщение пользователю')
					connect = sqlite3.connect('users_id.db')
					cursor = connect.cursor()
					cursor.execute("SELECT id FROM tg")
                                        results = cursor.fetchall()
                                           for i in results:
                                               await bot.send_message(i[0], text)
                                except:
                                    time.sleep(5)
		                    print('Перезапускаю сокет')
		                    loop.create_task(main())
  • Вопрос задан
  • 1139 просмотров
Подписаться 1 Простой 6 комментариев
Решения вопроса 1
@nedland
import logging
import asyncio
import random
import sqlite3
import string
import json

#aiogram и всё утилиты для коректной работы с Telegram API
from aiogram import Bot, types
from aiogram.utils import executor
from aiogram.utils.emoji import emojize
from aiogram.dispatcher import Dispatcher
from aiogram.types.message import ContentType
from aiogram.utils.markdown import text, bold, italic, code, pre, hbold, hunderline
from aiogram.types import ParseMode, InputMediaPhoto, InputMediaVideo, ChatActions
from aiogram.types import ReplyKeyboardRemove,ReplyKeyboardMarkup, KeyboardButton, InlineKeyboardMarkup, InlineKeyboardButton
from aiogram.dispatcher import FSMContext
from aiogram.dispatcher.filters.state import State, StatesGroup
from aiogram.contrib.fsm_storage.memory import MemoryStorage
import aiogram.utils.exceptions
from aiogram.types.message import ContentTypes

#конфиг с настройками
from config import TOKEN
from database import dbworker

#инициализируем бота
bot = Bot(token=TOKEN, parse_mode=types.ParseMode.HTML)
dp = Dispatcher(bot,storage=MemoryStorage())

#логирование
logging.basicConfig(filename="all_log.log", level=logging.INFO, format='%(asctime)s - %(levelname)s -%(message)s')
warning_log = logging.getLogger("warning_log")
warning_log.setLevel(logging.WARNING)

fh = logging.FileHandler("warning_log.log")

formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')
fh.setFormatter(formatter)

warning_log.addHandler(fh)

@dp.message_handler(commands=['start'],state='*')
async def start(message : types.Message, state: FSMContext):
// НИКОГДА НЕ ЗАСЫПАЕТ, ЧТО БЫ НЕ БЫЛО ТУТ

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


Всех ботов, что делал, так сказать шаблон для старта - никогда не засыпает
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы