Задача бота отслеживать все сообщение посланные мной в любой чат Telegram. Бот запускается, ошибка не появляется, но при отправке сообщений бот их не видит и не выводит текст этого сообщения.
import os
import asyncio
from pyrogram import Client, filters
from pyrogram.errors import SessionPasswordNeeded, PasswordHashInvalid, PhoneCodeInvalid
import datetime
import json
async def create_session_telegram():
nickname = input('Введите nickname для создания новой записи:\n')
number = input('Введите номер для регистрации в приложении\n(Например: +79991113322):\n')
print('Далее понадобится api_id и api_hash.\nДля его получения нужно перейти на сайт my.telegram.org\n'
' - Зайти в аккаунт\n'
' - Зайти во вкладку "API development tools"\n'
' - Скопировать api_id и api_hash')
api_id = str(input('Введите api_id:\n'))
api_hash = str(input('Введите api_hash:\n'))
while True:
client = Client(name=nickname, api_id=api_id, api_hash=api_hash, workdir=f'{os.getcwd()}/session')
await client.start()
try:
send_code_info = await client.send_code(phone_number=number)
phone_code = input('Введите код из сообщения Telegram:\n')
await client.sign_in(number, send_code_info.phone_code_hash, phone_code)
return client
except SessionPasswordNeeded:
password = input('Требуется пароль (2FA)\nВведите пароль:\n')
await client.check_password(password)
return client
except PhoneCodeInvalid as e:
print(f'Неправильный код из сообщения - {e}')
except PasswordHashInvalid as e:
print(f'Неправильный пароль - {e}')
await client.send_message("me", "Login complete!\n Save session!")
print('Проверочное сообщение отправлено, сессия создана.')
async def choose_account():
session_dir = f'{os.getcwd()}/session'
accounts = os.listdir(session_dir)
if len(accounts) != 0:
print("Выберите учетную запись из списка:")
for i, account in enumerate(accounts, 1):
print(f"{i}. {account.split('.')[0]}")
while True:
try:
choice = input("Введите номер учетной записи (0 для регистрации новой сессии): ")
choice = int(choice)
if 1 <= choice <= len(accounts):
return Client(f'session/{accounts[choice - 1].split(".")[0]}')
elif choice == 0:
return await create_session_telegram()
else:
print("Неверный номер. Попробуйте снова.")
except ValueError:
print("Неверный ввод. Попробуйте снова.")
else:
return await create_session_telegram()
async def main():
app = await choose_account()
@app.on_message(filters.me)
async def save_chat_messages(client, message):
print(f"Received message: {message.text}")
await app.start()
me = await app.get_me()
print(f'Bot is running in chat: {me.first_name}')
while True:
await asyncio.sleep(1)
if __name__ == '__main__':
asyncio.run(main())