テレグラムのSMSが送られてこない時(解決法しかしプログラミングスキル必須w)

最近はテレグラムのBotをPythonで開発していますが、調子乗って3万8千通あるWe The Media公式チャネルの投稿を翻訳付きで再投稿しまくっていたら、ペースが速すぎたかで、テレグラムからアカウントのBANを食らってしまいました。

サポートにメールして、次の日に対応してもらって、解除になったはずなんですが、Telegram DesktopにログインしようにもログインコードをSMSに送ってくれないので困ったわけです。


“しかーし、Telegram DesktopにログインしようとしてもログインコードがSMSで送られてこない問題があり、まだログインは出来ていない状況。Telegramは基本ログアウトするという概念が無いというか、非推奨であるので、一回使いだしたら複数端末で同時ログインになる前提なので、ログインコードはテレグラムで送ってくる仕様だからSMSを要求するのにはあと二回クリックが増えるんだけど、やっても何も起こらん(´・ω・`)・・・”

こちらで書いたようにSMSを要求することも可能なはずで、クリックしているんだけど、全然こない。

5回くらい試したら、試しすぎだから、ちょっと間隔を置いてから再挑戦しろと怒られてしまった。

調べてみると2021年4月からデスクトップアプリやウェブアプリにはSMS送らないという方針に変更があったとすらある。ボタン残してるのにそれはないよなーー・・。携帯電話のアプリでのみSMSが送られるらしい。

しかし、不思議なことにBotがログインしようとする時はちゃんと暗証番号が送られてくることに気がついた。

つまり、Botがログインしていれば、Telegram公式からのメッセージも読めるはずなので、そっちのメッセージを読めばコードも見れるはずなのだ。

pip install python-telegram

で、必要なパッケージをPython3にインスコしたら次のコードで公式からの最新メッセージが表示される。

from telegram.client import Telegram

# set up a userbot
API_ID = os.getenv('API_ID')
API_HASH = os.getenv('API_HASH')
PHONE = os.getenv('PHONE')
DB_encryption = os.getenv('DB_encryption')

tg = Telegram(
    api_id=API_ID,
    api_hash=API_HASH,
    phone=PHONE,
    database_encryption_key=DB_encryption,
)
tg.login()

r = tg.get_chat_history(777000,10,0)
r.wait()

msgs = r.update['messages']
print(msgs[0]['content']['text']['text'])

> Login code: 12345. Do not give this code to anyone, even if they say they are from Telegram!

This code can be used to log in to your Telegram account. We never ask it for anything else.

If you didn't request this code by trying to log in on another device, simply ignore this message.

あとはデスクトップアプリで電話番号入れてコードがテレグラムに送られてくるのをこのBotで読んで、コードをデスクトップアプリに入力するのだ。


こんな方法出来るか!という方はスマホのテレグラムアプリにまずログインしてからデスクトップアプリにログインする方法が良いようです。モバイル版だとSMSもちゃんと来るらしいし、一度ログインできたらコードがテレグラムできてもへっちゃらだ。これ、Botでログインしてからアヒルさんにお伺いして気づいたので、時既にお寿司🍣だったのですが。


777000

これがテレグラム公式からのメッセージがくるチャットのチャットIDのはずだけど、もし違ったらチャットのリストを表示してみつけてね。

def show_chat_list(tg):

   # get_chats will list all channels, groups, 1:1 chats I initiated and not left.
   result = tg.get_chats(9223372036854775807)
   result.wait()

   chats = result.update['chat_ids']

   # get each chat
   print('Chat List')
   chat_map = {}
   for chat_id in chats:
       r = tg.get_chat(chat_id)
       r.wait()
       title = r.update['title']
       print('  %20d\t%s' % (chat_id, title))
       chat_map[chat_id] = r.update
   return chat_map



誰得wwww


私の昔からやってるココログの初期はこんな誰得情報満載でした。2009年からあるw誰得情報を世に出すためだけに作ったブログだもん。

1月にやってた暗闇アップデートとかトランプさぽには面白いかも。懐かしい。