【问题标题】:Telethon: can't start a session programaticallyTelethon:无法以编程方式开始会话
【发布时间】:2021-07-01 01:21:11
【问题描述】:

我正在尝试在函数内启动 TelegramClient 会话。

没有错误,但events.NewMessage 的装饰器似乎没有起作用...

这是我使用的代码:

async def runClient(sessionName):
  client = getClientBySessionName(sessionName) # this is constructed with TelegramClient from telethon.sync

  await client.connect()
  me = await client.get_me()
  print(me.first_name)
  await client.disconnect()
  if not me:
    return
    
  await client.start()

  @client.on(events.NewMessage)
  async def nmh(event):
    await newMessageHandler(event, client)

async def newMessageHandler(event, client):
  print(event.raw_text)

为了确保我已经正确创建了 TelegramClient,我已经测试了其他方法,它工作正常

问题:

当新消息累积时,不会记录任何内容

【问题讨论】:

  • 您是否启用了logging
  • @Lonami,是的,日志记录已启用,我使用client.send_message('me', 'hello') 检查了客户端实例,效果很好。该行就在client.start()之后
  • 函数执行后asyncio事件循环是继续运行,还是脚本退出?如果它只是退出,显然 ir 无法监听更新,则必须运行循环(例如使用 client.run_until_disconnected())。
  • @Lonami 脚本没有退出,它继续运行,但我没有收到新消息。 (装饰器不起作用)
  • 脚本如何继续运行? while True; sleep(1) 不行。

标签: python telegram telethon


【解决方案1】:

你尝试过这样的事情吗?

@client.on(events.NewMessage(chats=user_input_channel))
    async def newMessageListener(event):
        ...

【讨论】:

  • 是的,我做到了!那样也行不通
猜你喜欢
  • 1970-01-01
  • 2010-11-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-03
  • 2019-01-31
  • 1970-01-01
相关资源
最近更新 更多