Telegram бот aiogram

Можете подсказать как исправить ошибку? Код и ошибку прикладываю:

import config
import logging
import asyncio
from datetime import datetime

from aiogram import Bot, Dispatcher, executor, types
from sqlighter import SQLighter

from stopgame import StopGame

# задаем уровень логов
logging.basicConfig(level=logging.INFO)

# инициализируем бота
bot = Bot(token=config.API_TOKEN)
dp = Dispatcher(bot)

# инициализируем соединение с БД
db = SQLighter('db.db')

# инициализируем парсер
sg = StopGame('lastkey.txt')

# Команда активации подписки
@dp.message_handler(commands=['subscribe'])
async def subscribe(message: types.Message):
    if(not db.subscriber_exists(message.from_user.id)):
        # если юзера нет в базе, добавляем его
        db.add_subscriber(message.from_user.id)
    else:
        # если он уже есть, то просто обновляем ему статус подписки
        db.update_subscription(message.from_user.id, True)
    
    await message.answer("Вы успешно подписались на рассылку!\nЖдите, скоро выйдут новые обзоры и вы узнаете о них первыми =)")

# Команда отписки
@dp.message_handler(commands=['unsubscribe'])
async def unsubscribe(message: types.Message):
    if(not db.subscriber_exists(message.from_user.id)):
        # если юзера нет в базе, добавляем его с неактивной подпиской (запоминаем)
        db.add_subscriber(message.from_user.id, False)
        await message.answer("Вы итак не подписаны.")
    else:
        # если он уже есть, то просто обновляем ему статус подписки
        db.update_subscription(message.from_user.id, False)
        await message.answer("Вы успешно отписаны от рассылки.")

# проверяем наличие новых игр и делаем рассылки
async def scheduled(wait_for):
    while True:
        await asyncio.sleep(wait_for)

        # проверяем наличие новых игр
        new_games = sg.new_games()

        if(new_games):
            # если игры есть, переворачиваем список и итерируем
            new_games.reverse()
            for ng in new_games:
                # парсим инфу о новой игре
                nfo = sg.game_info(ng)

                # получаем список подписчиков бота
                subscriptions = db.get_subscriptions()

                # отправляем всем новость
                with open(sg.download_image(nfo['image']), 'rb') as photo:
                    for s in subscriptions:
                        await bot.send_photo(
                            s[1],
                            photo,
                            caption = nfo['title'] + "\n" + "Оценка: " + nfo['score'] + "\n" + nfo['excerpt'] + "\n\n" + nfo['link'],
                            disable_notification = True
                        )
                
                # обновляем ключ
                sg.update_lastkey(nfo['id'])

# запускаем лонг поллинг
if __name__ == '__main__':
    loop = asyncio.get_event_loop()
    loop.create_task(scheduled(10)) 
    executor.start_polling(dp, skip_updates=True)

Ошибка

INFO:aiogram.dispatcher.dispatcher:Start polling.
ERROR:asyncio:Task exception was never retrieved
future: <Task finished name='Task-1' coro=<scheduled() done, defined at D:\python\bot\bot.py:49> exception=ChatNotFound('Chat not found')>
Traceback (most recent call last):
  File "D:\python\bot\bot.py", line 69, in scheduled
    await bot.send_photo(
  File "C:\Python39\lib\site-packages\aiogram\bot\bot.py", line 482, in send_photo
    result = await self.request(api.Methods.SEND_PHOTO, payload, files)
  File "C:\Python39\lib\site-packages\aiogram\bot\base.py", line 208, in request
    return await api.make_request(self.session, self.server, self.__token, method, data, files,
  File "C:\Python39\lib\site-packages\aiogram\bot\api.py", line 140, in make_request
    return check_result(method, response.content_type, response.status, await response.text())
  File "C:\Python39\lib\site-packages\aiogram\bot\api.py", line 115, in check_result
    exceptions.BadRequest.detect(description)
  File "C:\Python39\lib\site-packages\aiogram\utils\exceptions.py", line 140, in detect
    raise err(cls.text or description)
aiogram.utils.exceptions.ChatNotFound: Chat not found

Спасибо!


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

Автор решения: Muxe1

Попытайся добавить message.chat.id в await bot.send_photo()

→ Ссылка
Автор решения: oleksandrigo

Я так понимаю s[1] это какой-то чат(юзер) айди?
Если да то ошибка говорит что такого чата нет, это значит что скорее всего юзер просто удалил чат с ботом(заблокировал).
Чтобы пофиксить просто сделать try/except и удаляй чат из списка subscriptions

# отправляем всем новость
with open(sg.download_image(nfo['image']), 'rb') as photo:
    for s in subscriptions[:]:
        try:
            await bot.send_photo(
                s[1],
                photo,
                caption=nfo['title'] + "\n" + "Оценка: " + nfo['score'] + "\n" + nfo['excerpt'] + "\n\n" + nfo['link'],
                disable_notification=True
            )
        except aiogram.utils.exceptions.ChatNotFound:
            subscriptions.remove(s)
→ Ссылка