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

При запуске бота выдает ошибку AttributeError: 'NoneType' object has no attribute 'create_task' как исправить?

вот код main.py

import sqlite3
from aiogram import Bot, types
from aiogram.dispatcher import Dispatcher
from aiogram.utils import executor
from aiogram.types import ReplyKeyboardRemove, \
ReplyKeyboardMarkup, KeyboardButton, \
InlineKeyboardMarkup, InlineKeyboardButton
import asyncio
import config
from pyrogram import Client
from requests_html import HTMLSession
from time import sleep
from func import *

loop = asyncio.get_event_loop()
bot = Bot(token=config.token, loop=loop)
dp = Dispatcher(bot)

client = Client("fsfdsf", config.api_id, config.api_hash)
client.start()

async def get_channels():
while True:
await asyncio.sleep(1)
session = HTMLSession()
for _ in get_m():
_ = _[0]
r = session.get(f'https://t.me/{_}')
if '' in r.text:
detele_monitoring(_)
channel = await client.create_channel("tfdgfdgsdfdshfdgaaa")
await client.update_chat_username(channel.id, _)
for i in config.admins:
await bot.send_message(i, f" Бот обнаружил пустой линк [@{_}] и успешно его заменил.", parse_mode="HTML")
else:
print('Ничего не найдено', _)

@dp.message_handler(commands=['start'])
async def process_start_command(m: types.Message):
if m.chat.id in config.admins:
text = " Стилер логинов в телегам:\n\n"\
f" Просматривается каналов: {len(get_m())}шт.\n"
button = KeyboardButton('➕ Добавить каналы')
button1 = KeyboardButton(' Главная')
keyboard = ReplyKeyboardMarkup(resize_keyboard=True)
keyboard.add(button)
keyboard.add(button1)
await bot.send_message(m.chat.id, text,reply_markup=keyboard, parse_mode="HTML")
else:
await bot.send_message(m.chat.id, "❌ Вам запрещенно использовать данного бота.", parse_mode="HTML")

@dp.message_handler()
async def echo_message(m: types.Message):
if m.text == '➕ Добавить каналы':
await bot.send_message(m.chat.id, ' Введите каналы построчно, каждая строка - новый канал. (С @)', parse_mode="HTML")
elif m.text == ' Главная':
await process_start_command(m)
elif "@" in m.text:
for _ in m.text.split('\n'):
if "@" in _:
add_m(_.split("@")[1])
await bot.send_message(m.chat.id, f'✅ Канал "{_}" был успешно добавлен.', parse_mode="HTML")
else:
pass


if __name__ == '__main__':
dp.loop.create_task(get_channels())
executor.start_polling(dp)


Выводится ошибка:
Traceback (most recent call last):
File "main.py", line 69, in
dp.loop.create_task(get_channels())
AttributeError: 'NoneType' object has no attribute 'create_task'
  • Вопрос задан
  • 409 просмотров
Подписаться Простой 1 комментарий
Решения вопроса 1
Vindicar
@Vindicar
RTFM!
dp.loop.create_task(get_channels())
На момент этого вызов диспетчер еще не начал работу, поэтому его рабочий цикл (loop) отсутствует. Я полагаю, create_task() нужно вызывать внутри какого-либо обработчика события, тогда можно быть уверенным, что рабочий цикл уже запущен.
Если API aiogram имеет событие, срабатывающее при подключении к сети, обработчик этого события будет подходящим местом.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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