我试着用Telethon和AWS Lambda。更确切地说,我正在尝试使用客户端对象从一些公共渠道获取消息。
是否有方法导入AWS Lambda中的现有会话,以防止Telegram/telethon请求验证代码(这是无法输入的)?
下面是我在AWS Lambda中尝试通过电传连接到电报的代码:
api_id== os.environ.get('TELEGRAM_API_ID')
api_hash = os.environ.get('TELEGRAM_API_HASH')
userName = os.environ.get('TELEGRAM_USERNAME')
phone = os.environ.get('TELEGRAM_PHONE')
os.chdir("/tmp")
client = TelegramClient(userName, api_id, api_hash)下面是我在AWS中通过层(与userName同名)导入的会话文件会话文件
但是,似乎没有使用/读取会话文件,因为telethon正在询问验证代码和电话号码。
有人知道怎么解决这个问题吗?谢谢
发布于 2022-07-29 15:55:44
这花了一些时间,但我找到了解决这个问题的方法,并在Lambda上运行了一个电报客户端)
您所需要做的就是使用不同的会话类型,即StringSession。
正如正式文件中所指出的,您所需要做的就是在本地环境中生成一个StringSession,将字符串保存在文件或局部变量中,并在您的lambda代码中使用它。
生成StringSession,在本例中,您将看到终端中的输出:
from telethon.sync import TelegramClient
from telethon.sessions import StringSession
with TelegramClient(StringSession(), api_id, api_hash) as client:
print(client.session.save())将新创建的StringSession保存到Lambda中的环境变量中,如这里所述,现在您可以这样做:
from telethon.sync import TelegramClient
from telethon.sessions import StringSession
import os
string = os.environ.get('session') # env variable named "session"
with TelegramClient(StringSession(string), api_id, api_hash) as client:
client.loop.run_until_complete(client.send_message('me', 'Hi'))https://stackoverflow.com/questions/72927247
复制相似问题