电报获取聊天信息/帖子-python Telethon

电报获取聊天信息/帖子-python Telethon,python,telethon,Python,Telethon,我正在使用Telethon和Python 3.6xx 能够从群组中检索信息,没问题,但当涉及到频道时,我就卡住了 dialogs = client(get_dialogs) for chat in dialogs.chats: getmessage = client.get_messages(chat.id, limit=400) for message in getmessage: print(message.message) 我搜索了telethon文档,但大多

我正在使用Telethon和Python 3.6xx

能够从群组中检索信息,没问题,但当涉及到频道时,我就卡住了

dialogs = client(get_dialogs)
for chat in dialogs.chats:
   getmessage = client.get_messages(chat.id, limit=400)
   for message in getmessage:
        print(message.message)
我搜索了telethon文档,但大多数答案都是对旧的
get\u message\u history
的响应

当我尝试使用以下
chat.id=1097988869
(news.bitcoin.com)时,我发现以下错误(对于组,
chat.id
工作正常):

PeerRidinValiderRor:使用了无效的对等方。确保传递正确的对等类型

更新:

在新版本的Telethon中,@Lonami answer是最好的,请使用它

############################################################

您可以使用此代码获取消息:

client = TelegramClient('session_name',
                    api_id,
                    api_hash,
                    update_workers=1,
                    spawn_read_thread=False)
assert client.connect()
if not client.is_user_authorized():
    client.send_code_request(phone_number)
    me = client.sign_in(phone_number, input('Enter code: '))

channel_username='tehrandb' # your channel
channel_entity=client.get_entity(channel_username)
posts = client(GetHistoryRequest(
    peer=channel_entity,
    limit=100,
    offset_date=None,
    offset_id=0,
    max_id=0,
    min_id=0,
    add_offset=0,
    hash=0))
# messages stored in `posts.messages`

公认的答案是好的,但Telethon的最新版本让您更容易实现同样的目标。这将迭代
聊天
中的所有消息(在本例中,我们使用
telethon.sync
避免键入
async
):

例如,变量应该是显而易见的(注意这些API值不起作用,您需要自己的):

文档中提供了更多使用
async
的示例。

对我有用

api_哈希来自,正在api开发中

from telethon import TelegramClient, events, sync

api_id = 'your api_id'
api_hash = 'your api_hash'

client = TelegramClient('session_name', api_id, api_hash)
client.start()
channel_username = 'username'# your channel
for message in client.get_messages(channel_username, limit=10):
    print(message.message)

你想从频道中获取消息吗?请注意,在Telethon的最新版本中,
client.get_messages(chat,limit=400)
应该可以正常工作。谢谢阿里!对于像我这样的初学者,您可以通过在帖子中添加消息的
来访问频道消息的文本。消息:打印(message.message)
您忘记了telethon.tl.functions.messages导入GetHistoryRequest其他人的注意事项,在更新版本的telethon中,库是异步的,此代码将失败。必须正确等待一切或导入telethon.sync。这适用于
telethon==1.10.8
,而接受的答案会引发异常,因为
posts
不再具有属性
messages
@EliasStrehle
posts
仍应具有
messages
,但可能只是错过了等待电话。有没有快捷方式转发聊天室的所有信息?我正在尝试转发聊天室中的所有消息,从最早的开始转发到newest@Lonami如何从频道或组获取消息。上面写着
ValueError:没有用户的用户名是“xxx”
name = 'anon'
api_id = 123
api_hash = 'abcdefgh'
chat = 'me'
from telethon import TelegramClient, events, sync

api_id = 'your api_id'
api_hash = 'your api_hash'

client = TelegramClient('session_name', api_id, api_hash)
client.start()
channel_username = 'username'# your channel
for message in client.get_messages(channel_username, limit=10):
    print(message.message)