Telegram 获取聊天消息/帖子 - python Telethon
Telegram get chat messages /posts - 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)
我搜索了电视节目文档,但大多数答案都是对旧 get_message_history
的回应。
当我尝试使用以下 chat.id = 1097988869
(news.bitcoin.com) 时,出现以下错误(对于组,chat.id
工作正常):
PeerIdInvalidError: An invalid Peer was used. Make sure to pass the right peer type
更新:
在新版Telethon中,@Lonami的回答最好,用吧
########################################### ###############
您可以使用此代码获取消息:
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 可让您更轻松地实现同样的目标。这将遍历 chat
中的 all 消息(在本例中我们使用 telethon.sync
以避免输入 async
):
from telethon.sync import TelegramClient
with TelegramClient(name, api_id, api_hash) as client:
for message in client.iter_messages(chat):
print(message.sender_id, ':', message.text)
变量应该很明显的地方,例如(注意这些 API 值不起作用,您需要自己的值):
name = 'anon'
api_id = 123
api_hash = 'abcdefgh'
chat = 'me'
client.iter_messages
文档中提供了更多使用 async
的示例。
对我有用!
api_hash 来自 https://my.telegram.org,在 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 和 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)
我搜索了电视节目文档,但大多数答案都是对旧 get_message_history
的回应。
当我尝试使用以下 chat.id = 1097988869
(news.bitcoin.com) 时,出现以下错误(对于组,chat.id
工作正常):
PeerIdInvalidError: An invalid Peer was used. Make sure to pass the right peer type
更新:
在新版Telethon中,@Lonami的回答最好,用吧
########################################### ###############
您可以使用此代码获取消息:
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 可让您更轻松地实现同样的目标。这将遍历 chat
中的 all 消息(在本例中我们使用 telethon.sync
以避免输入 async
):
from telethon.sync import TelegramClient
with TelegramClient(name, api_id, api_hash) as client:
for message in client.iter_messages(chat):
print(message.sender_id, ':', message.text)
变量应该很明显的地方,例如(注意这些 API 值不起作用,您需要自己的值):
name = 'anon'
api_id = 123
api_hash = 'abcdefgh'
chat = 'me'
client.iter_messages
文档中提供了更多使用 async
的示例。
对我有用!
api_hash 来自 https://my.telegram.org,在 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)