如何解决Telethon无法读取我的电话号码电报
因此,我正在尝试创建一个脚本来读取电报中的消息。基本上我是在网上找到此脚本的,但是无法正常工作
这是代码
import configparser
import json
import asyncio
from datetime import date,datetime
from telethon import TelegramClient
from telethon.errors import SessionPasswordNeededError
from telethon.tl.functions.messages import (GetHistoryRequest)
from telethon.tl.types import (
PeerChannel
)
# some functions to parse json date
class DateTimeEncoder(json.JSONEncoder):
def default(self,o):
if isinstance(o,datetime):
return o.isoformat()
if isinstance(o,bytes):
return list(o)
return json.JSONEncoder.default(self,o)
# Reading Configs
config = configparser.ConfigParser()
config.read("config.ini")
# Setting configuration values
api_id = config['Telegram']['api_id']
api_hash = config['Telegram']['api_hash']
api_hash = str(api_hash)
phone = config['Telegram']['phone']
username = config['Telegram']['username']
# Create the client and connect
client = TelegramClient(username,api_id,api_hash)
async def main(phone):
await client.start()
print("Client Created")
# Ensure you're authorized
if await client.is_user_authorized() == False:
await client.send_code_request(phone)
try:
await client.sign_in(phone,input('Enter the code: '))
except SessionPasswordNeededError:
await client.sign_in(password=input('Password: '))
me = await client.get_me()
user_input_channel = input('enter entity(telegram URL or entity id):')
if user_input_channel.isdigit():
entity = PeerChannel(int(user_input_channel))
else:
entity = user_input_channel
my_channel = await client.get_entity(entity)
offset_id = 0
limit = 100
all_messages = []
total_messages = 0
total_count_limit = 0
while True:
print("Current Offset ID is:",offset_id,"; Total Messages:",total_messages)
history = await client(GetHistoryRequest(
peer=my_channel,offset_id=offset_id,offset_date=None,add_offset=0,limit=limit,max_id=0,min_id=0,hash=0
))
if not history.messages:
break
messages = history.messages
for message in messages:
all_messages.append(message.to_dict())
offset_id = messages[len(messages) - 1].id
total_messages = len(all_messages)
if total_count_limit != 0 and total_messages >= total_count_limit:
break
with open('channel_messages.json','w') as outfile:
json.dump(all_messages,outfile,cls=DateTimeEncoder)
with client:
client.loop.run_until_complete(main(phone))
基本上,当我运行它时,我得到了
请输入您的手机(或漫游器令牌):
当我以正确的国际格式键入我的电话号码(+ 3xxxxxxxx),然后按Enter键时,什么也没有发生。因此程序被卡在那里。有帮助吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。