首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >导入Telethon会话AWS Lambda

导入Telethon会话AWS Lambda
EN

Stack Overflow用户
提问于 2022-07-10 08:48:13
回答 1查看 95关注 0票数 1

我试着用Telethon和AWS Lambda。更确切地说,我正在尝试使用客户端对象从一些公共渠道获取消息。

是否有方法导入AWS Lambda中的现有会话,以防止Telegram/telethon请求验证代码(这是无法输入的)?

下面是我在AWS Lambda中尝试通过电传连接到电报的代码:

代码语言:javascript
复制
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正在询问验证代码和电话号码。

有人知道怎么解决这个问题吗?谢谢

EN

回答 1

Stack Overflow用户

发布于 2022-07-29 15:55:44

这花了一些时间,但我找到了解决这个问题的方法,并在Lambda上运行了一个电报客户端)

您所需要做的就是使用不同的会话类型,即StringSession。

正如正式文件中所指出的,您所需要做的就是在本地环境中生成一个StringSession,将字符串保存在文件或局部变量中,并在您的lambda代码中使用它。

生成StringSession,在本例中,您将看到终端中的输出:

代码语言:javascript
复制
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中的环境变量中,如这里所述,现在您可以这样做:

代码语言:javascript
复制
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'))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72927247

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档