簡體   English   中英

Telethon Telegram session_name 錯誤

[英]Telethon Telegram session_name errror

這是對此處提出的問題的跟進: 如何從 Telegram 獲取公共頻道的消息

這里使用的代碼是:

import asyncio
from telethon import TelegramClient
from telethon.tl import functions, types

client = TelegramClient('YOUR_SESSION_NAME', 'YOUR_API_ID', 'YOUR_API_HASH')
client.start()

async def main():
    channel = await client.get_entity('CHANNEL USERNAME')
    messages = await client.get_messages(channel, limit= None) #pass your own args

    #then if you want to get all the messages text
    for x in messages:
        print(x.text) #return message.text

在此代碼中使用了YOUR_SESSION_NAME ,我不確定那是什么。 我已經瀏覽了這里的文檔: https://docs.telethon.dev/en/latest/concepts/sessions.html但是因為我對 python 很陌生,所以我被困在這里。 我確實有'YOUR_API_ID''YOUR_API_HASH'

截至目前,當我運行此代碼時,我收到以下錯誤:下面的完整錯誤

---------------------------------------------------------------------------
OperationalError                          Traceback (most recent call last)
<ipython-input-2-de73a24697a1> in <module>
      3 from telethon.tl import functions, types
      4 
----> 5 client = TelegramClient('anon', '[code]', '[code]')
      6 client.start()
      7 

C:\ProgramData\Anaconda3\lib\site-packages\telethon\client\telegrambaseclient.py in __init__(self, session, api_id, api_hash, connection, use_ipv6, proxy, local_addr, timeout, request_retries, connection_retries, retry_delay, auto_reconnect, sequential_updates, flood_sleep_threshold, raise_last_call_error, device_model, system_version, app_version, lang_code, system_lang_code, loop, base_logger)
    279         if (not session.server_address or
    280                 (':' in session.server_address) != use_ipv6):
--> 281             session.set_dc(
    282                 DEFAULT_DC_ID,
    283                 DEFAULT_IPV6_IP if self._use_ipv6 else DEFAULT_IPV4_IP,

C:\ProgramData\Anaconda3\lib\site-packages\telethon\sessions\sqlite.py in set_dc(self, dc_id, server_address, port)
    166     def set_dc(self, dc_id, server_address, port):
    167         super().set_dc(dc_id, server_address, port)
--> 168         self._update_session_table()
    169 
    170         # Fetch the auth_key corresponding to this data center

C:\ProgramData\Anaconda3\lib\site-packages\telethon\sessions\sqlite.py in _update_session_table(self)
    192         # some more work before being able to save auth_key's for
    193         # multiple DCs. Probably done differently.
--> 194         c.execute('delete from sessions')
    195         c.execute('insert or replace into sessions values (?,?,?,?,?)', (
    196             self._dc_id,

OperationalError: database is locked

你能否給我一些關於我做錯了什么的指示? 我的目標是打印所有聊天的文本日志,以便我可以為關鍵字運行搜索文件以運行警報。

您可以使用您想出的任何 session 名稱。 例如,你可以寫:

...
session_name = "Test Session"
client = TelegramClient(session_name, 'YOUR_API_ID', 'YOUR_API_HASH')
client.start()
...

然后 Telegram 會要求您通過向您的 TG 客戶端(網絡/移動)發送代碼來確認這是您本人。 如果您將再次使用此 session 名稱 - 確認不會出現。 否則,您將重命名此名稱,您需要再次確認。

順便說一句,您可以使用 input() function 創建您的 session 名稱,如下所示:

...
session_name = input("Enter your session name: ")
client = TelegramClient(session_name, 'YOUR_API_ID', 'YOUR_API_HASH')
client.start()
...

然后,您必須進行確認。 請注意,如果您將使用 input() - 不要忘記每次都輸入相同的名稱; 如果您至少在一個符號上犯錯 - 您必須再次確認。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM