微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Telethon无法读取我的电话号码电报

如何解决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 举报,一经查实,本站将立刻删除。