【问题标题】:how to recieve only new message fom telegram channel using telethon, python如何使用 Telethon,python 仅从电报频道接收新消息
【发布时间】:2021-01-01 12:04:49
【问题描述】:

我是 python 及其框架的新手,我无法从电报频道访问最新消息。

我想从频道获取最新消息并使用我的代码处理它们。通过在stackoverflow中进行一些搜索,我找到了获取频道消息的解决方案。但是该代码会转储该电报频道中的所有消息。

获取频道消息的代码。

    from telethon import TelegramClient, events, sync
# These example values won't work. You must get your own api_id and
# api_hash from https://my.telegram.org, under API Development.
api_id = 123456
api_hash = 'abcdefghijklmnopqrstuvwxyz123456789'

client = TelegramClient('anon', api_id, api_hash)

async def main():
    # You can print the message history of any chat:
    async for message in client.iter_messages('SampleChannel'):
        print(message.sender.username, message.text)
        print('xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx')

with client:
    client.loop.run_until_complete(main())

我只想要该频道上的最新消息。建议我需要修改的代码。

【问题讨论】:

  • 也许您不应该公开您的 API id 和哈希?我不知道这对你来说是否重要,这对你来说是一个秘密还是你只是在试验的天气

标签: python telegram telethon


【解决方案1】:

client.iter_messages 的文档显示此方法有一个limit 参数:

要检索的消息数。

您的代码只需要使用这个参数:

async def main():
    limit = 10
    async for message in client.iter_messages('SampleChannel', limit):
        print(message.sender.username, message.text)

【讨论】:

    【解决方案2】:

    如果“最新”是指新消息到达时,请查看the docs,更具体地说是NewMessage,那里有一个很好的例子。 您可以根据许多参数在 NewMessage 上定义多个事件处理程序,例如通道 ID,甚至消息模式。 例如,对于您的情况,您想从单个频道获取新消息,它可能是

    client.on(events.NewMessage(chats=myChannelIDList))
    async def my_event_handler(event):
        print(event.message)
    

    这将打印到达 myChannelIDList 中定义的实体的新消​​息。

    根据文档,chats 参数可以具有“一个或多个实体(用户名/对等/等),最好是 ID。” stackoverflow 中有几个关于如何获取此 ID 的 Q/A,this one 可能对您有用,因为您使用的是 Python,更具体地说是带有此代码的示例:

    #To get the channel_id,group_id,user_id
    for chat in client.get_dialogs():
        print('name:{0} ids:{1} is_user:{2} is_channel{3} is_group:{4}'.format(chat.name,chat.id,chat.is_user,chat.is_channel,chat.is_group))
    

    这将打印 Telegram 帐户的所有“对话”的 ID。如果您是某个频道的成员,它将在那里。

    问候!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-04-27
      • 1970-01-01
      • 1970-01-01
      • 2016-09-08
      • 2021-10-12
      • 1970-01-01
      • 2020-11-01
      • 2018-05-02
      相关资源
      最近更新 更多