Код ошибки:
Task exception was never retrieved
future: <Task finished coro=<Dispatcher._process_polling_updates() done, defined at C:\Users\admin\AppData\Local\Programs\Python\Python37\lib\site-packages\aiogram\dispatcher\dispatcher.py:395> exception=AttributeError("'coroutine' object has no attribute 'users'")>
Traceback (most recent call last):
File "C:\Users\admin\AppData\Local\Programs\Python\Python37\lib\site-packages\aiogram\dispatcher\dispatcher.py", line 403, in _process_polling_updates
for responses in itertools.chain.from_iterable(await self.process_updates(updates, fast)):
File "C:\Users\admin\AppData\Local\Programs\Python\Python37\lib\site-packages\aiogram\dispatcher\dispatcher.py", line 232, in process_updates
return await asyncio.gather(*tasks)
File "C:\Users\admin\AppData\Local\Programs\Python\Python37\lib\site-packages\aiogram\dispatcher\handler.py", line 117, in notify
response = await handler_obj.handler(*args, **partial_data)
File "C:\Users\admin\AppData\Local\Programs\Python\Python37\lib\site-packages\aiogram\dispatcher\dispatcher.py", line 253, in process_update
return await self.message_handlers.notify(update.message)
File "C:\Users\admin\AppData\Local\Programs\Python\Python37\lib\site-packages\aiogram\dispatcher\handler.py", line 117, in notify
response = await handler_obj.handler(*args, **partial_data)
File "main.py", line 86, in main
text = await check(message.text)
File "main.py", line 63, in check
if b.users != []:
AttributeError: 'coroutine' object has no attribute 'users'
C:\Users\admin\AppData\Local\Programs\Python\Python37\lib\asyncio\base_events.py:1772: RuntimeWarning: coroutine 'UserMethods.__call__' was never awaited
handle = None # Needed to break cycles when an exception occurs.
RuntimeWarning: Enable tracemalloc to get the object allocation traceback
Код бота:
from aiogram import Bot, types
from aiogram.dispatcher import Dispatcher
from aiogram.utils import executor
import sqlite3
import telethon, random, time, socks, sys, asyncio
from telethon.sync import TelegramClient
from telethon import TelegramClient, events, errors, functions, types,sync
from telethon.errors import SessionPasswordNeededError
from telethon.tl.functions.users import GetFullUserRequest
from telethon.tl.functions.messages import AddChatUserRequest, ImportChatInviteRequest
from telethon.tl.types import PeerUser, PeerChat, PeerChannel, InputPhoneContact
from telethon.tl.functions.channels import InviteToChannelRequest, JoinChannelRequest
from telethon.tl.functions.contacts import ImportContactsRequest, DeleteContactsRequest, GetContactsRequest
bot = Bot(token='121212')
dp = Dispatcher(bot)
api_id = 1
api_hash = '2'
try:
client = TelegramClient('user', api_id, api_hash)
except:
print('Добавьте прокси или включите VPN и перезагрузите программу.')
proxy_ip = input('Socks5 IP: ')
proxy_port = int(input('Socks5 PORT: '))
client = TelegramClient('user', api_id, api_hash, proxy=(socks.SOCKS5, proxy_ip, proxy_port))
client.connect()
if not client.is_user_authorized():
try:
print('Введите номер телефона (вместе с +):', end='')
phone_number = input(' ')
client.send_code_request(phone_number)
print('Введите код:', end='')
client.sign_in(phone_number, input(' '))
except telethon.errors.rpcerrorlist.SessionPasswordNeededError:
print('\nОтключите двухэтапную аутентификацию. Попробуйте еще раз.\n')
input('Нажмите Enter чтобы продолжить')
except telethon.errors.rpcerrorlist.FloodWaitError as e:
try:
print('\nСлишком много попыток. Попробуйте через ' + (f"{e.seconds}") + ' секунд.')
input('Нажмите Enter чтобы продолжить')
finally:
e = None
del e
except telethon.errors.rpcerrorlist.PhoneNumberInvalidError:
print('\nНеправильный номер. Попробуйте еще раз.\n')
input('Нажмите Enter чтобы продолжить')
except TypeError:
print('\nНеправильный номер. Попробуйте еще раз.\n')
input('Нажмите Enter чтобы продолжить')
except telethon.errors.rpcerrorlist.PhoneCodeInvalidError:
print('\nНеправильный код. Попробуйте еще раз.\n')
input('Нажмите Enter чтобы продолжить')
async def check(number):
contact = InputPhoneContact(client_id=0, phone=number, first_name=number, last_name='')
try:
a = client(ImportContactsRequest([contact]))
b = client(GetContactsRequest(hash=0))
if b.users != []:
for inf in b.users:
if inf.phone == number[1:]:
aasas = client(DeleteContactsRequest(id=[inf.id]))
data = client.get_entity(inf.id)
return f"Номер телефона: +{inf.phone}\nID: {inf.id}\nFirst Name: {data.first_name}\nLast Name: {data.last_name}\nUsername: @{inf.username}"
else:
return f"{number} отсутствует в телеграме."
else:
return f"{number} отсутствует в телеграме."
except telethon.errors.rpcerrorlist.FloodWaitError as e:
try:
print('Превышен лимит. Программа продолжит работу через ' + (f"{e.seconds}") + ' секунд(ы). Ждите...')
time.sleep(e.seconds + 10)
return f"Произошла ошибка в сервере Телеграм. Попробуйте через 20-30 секунд..."
except Exception as e:
print(repr(e))
@dp.message_handler(content_types=['text'])
async def main(message : types.Message):
if message.text == '/start':
await bot.send_message(message.from_user.id, 'Добро пожаловать!')
elif message.text.startswith('+'):
text = await check(message.text)
await bot.send_message(message.chat.id, text)
else:
pass
if __name__ == '__main__':
executor.start_polling(dp)
loop = asyncio.get_event_loop()
client.run_until_disconnected()