async def get_chat_info(username):
try:
chat = await client(ResolveUsernameRequest(username))
result = {
'chat_id': chat.peer.channel_id,
'access_hash': chat.chats[0].access_hash,
'title': chat.chats[0].title,
'username': username
}
except Exception as e:
result = None
return result
async def dump_users(chat):
offset = 0
limit = 200
counter = 0
all_participants = []
while_condition = True
cha = await InputChannel(chat['chat_id'], chat['access_hash'])
while while_condition:
try:
participants = await client(GetParticipantsRequest(cha, ChannelParticipantsSearch(''), offset, limit, hash=0))
except:
return 'null'
for x in participants.users:
db.add_to_db(x.id, x.username, x.first_name, chat['chat_id'])
if len(participants.users) == 0:
break
offset += len(participants.users)
counter += len(participants.users)
sleep(0.1)
return counter
@dp.message_handler(content_types=['text'])
async def main(message : types.Message):
if message.text.isdigit():
await bot.send_message(message.chat.id, 'Начинаем сбор информации...')
if db.exists_user(message.chat.id):
await bot.send_message(message.chat.id, 'Нашелся в базе...')
else:
await bot.send_message(message.chat.id, '<b>Пользователь не найден ни в одном чате.</b>\n\n<i>Если хотите добавить чат в базу, введите /addchat t.me/чат .</i>')
elif '/addchat' in message.text:
link = message.text.split(" ")[1]
if 'joinchat' in link:
link = link.split("joinchat/")[1]
if db.exists_chat(link) == None:
#try:
activate = await client(CheckChatInviteRequest(hash=link))
dan = await get_chat_info(link)
cha = await InputChannel(dan['chat_id'], dan['access_hash'])
participants = await client(GetParticipantsRequest(cha, ChannelParticipantsSearch(''), 0, 200, hash=0))
if len(participants.users) <= 20:
count = await dump_users(dan)
db.add_to_chats(user_id=dan['chat_id'], userka=link, namer=dan['title'])
await bot.send_message(message.chat.id, f'{count} users сохранено.')
else:
await bot.send_message(message.chat.id, f'<b>Чат должен иметь больше 20 пользователей.</b>')
#except Exception as e:
# print(repr(e))
# await bot.send_message(message.chat.id, "<b>Ссылка неактивна или не рабочая. Попробуйте еще раз</b>")
else:
await bot.send_message(message.chat.id, "<b>Данный чат уже есть в базе.</b>")
else:
link = link.split("t.me/")[1]
if db.exists_chat(link) == None:
#try:
dan = await get_chat_info(link)
cha = await InputChannel(dan['chat_id'], dan['access_hash'])
participants = await client(GetParticipantsRequest(cha, ChannelParticipantsSearch(''), 0, 200, hash=0))
if len(participants.users) <= 20:
count = await dump_users(dan)
db.add_to_chats(user_id=dan['chat_id'], userka=link, namer=dan['title'])
await bot.send_message(message.chat.id, f'{count} users сохранено.')
else:
await bot.send_message(message.chat.id, f'<b>Чат должен иметь больше 20 пользователей.</b>')
#except Exception as e:
# print(repr(e))
# await bot.send_message(message.chat.id, "<b>Ссылка неактивна или не рабочая. Попробуйте еще раз</b>")
else:
await bot.send_message(message.chat.id, "<b>Данный чат уже есть в базе.</b>")
else:
pass
Это код моего бота. Он будет проверять в каких чатах есть пользователь.
Вот ошибка:
<blockquote>
File "C:\Users\Analyzer\Desktop\Deanon BOT\bot.py", line 113, in main
cha = await InputChannel(dan['chat_id'], dan['access_hash'])
TypeError: 'NoneType' object is not subscriptable
</blockquote>
Помогите пожалуйста. Он так только с приватными ссылками чатов, часом ранее такого не было :/