Две сессии в одном клиенте, только одна из них получает сообщения от определенной группы.Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Две сессии в одном клиенте, только одна из них получает сообщения от определенной группы.

Сообщение Anonymous »

Я присоединился к определенному каналу Telegram с двумя разными учетными записями Telegram. Я запускаю приведенный ниже код, чтобы запустить оба сеанса с использованием пирограммы и распечатать полученное сообщение. Но я заметил, что при поступлении сообщения на телеграм-канал печаталось только одно из них, а другое нет. Однако когда я тестировал свой собственный тестовый канал телеграммы, я не смог воспроизвести проблему, т. е. оба сеанса напечатали сообщение на тестовом канале. Я в недоумении, почему проблема происходит с другим каналом. Оба номера подписаны на канал, и в приложении телефона сообщение видно на обоих телефонах. Что могло вызвать такое странное поведение?

Код: Выделить всё

#!/usr/bin/python3

from pyrogram import Client, filters, idle
from pyrogram.handlers import MessageHandler
import config
from pytz import timezone
from datetime import datetime
import requests
import asyncio

CHANNEL_ID = -1000123456789

def india_number_handler(client, message):
message_handler('india_number', message)

def uk_number_handler(client, message):
message_handler('uk_number', message)

def message_handler(session_name, message):
if message.sender_chat is not None and message.sender_chat.id == CHANNEL_ID and message.text is not None:
print(datetime.now().strftime('%d-%m-%Y-%H:%M:%S-%f') + ': ' + session_name + ' received channel message: ' + message.text, flush = True

async def main():
app_india = Client("india_number", api_id=config.getEnv("api_id"), api_hash=config.getEnv("api_hash"))
app_uk = Client("uk_number", api_id=config.getEnv("api_id"), api_hash=config.getEnv("api_hash"))
app_india.add_handler(MessageHandler(india_number_handler))
app_uk.add_handler(MessageHandler(uk_number_handler))
await app_india.start()
await app_uk.start()
await idle()
await app.stop()
await app_uk.stop()

asyncio.run(main())
В конце концов мне удалось воспроизвести проблему на моем тестовом канале, напечатан был только сеанс в Индии, а из сеанса в Великобритании ничего не было напечатано. Я заметил кое-что любопытное: когда я изменил порядок операторов start() так, чтобы сначала выполнялся app_uk.start(), затем сеанс uk начал печатать, а сеанс Индии замолчал. Это говорит о том, что происходит что-то не так, связанное с блокировкой потоков, хотя непонятно, почему противоречивое поведение обоих сеансов, успешно получивших события ранее на моем тестовом канале, не понятно.

Подробнее здесь: https://stackoverflow.com/questions/784 ... rom-a-cert
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Не могу создать две сессии - одна не работает, другая работает.
    Anonymous » » в форуме Python
    0 Ответы
    14 Просмотры
    Последнее сообщение Anonymous
  • Не могу создать две сессии - одна не работает, другая работает.
    Anonymous » » в форуме Python
    0 Ответы
    16 Просмотры
    Последнее сообщение Anonymous
  • Не могу создать две сессии - одна не работает, другая работает.
    Anonymous » » в форуме Python
    0 Ответы
    18 Просмотры
    Последнее сообщение Anonymous
  • Не могу создать две сессии - одна не работает, другая работает.
    Anonymous » » в форуме Python
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous
  • Не могу создать две сессии - одна не работает, другая работает.
    Anonymous » » в форуме Python
    0 Ответы
    13 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»