現在、ほとんどすべてのサイトに登録があります。 ほとんどの場合、電子メールで実装されますが、SMSでは実装されません。 しかし、電報ボットに登録するとどうなりますか? サイトへのログインとして、確認済みの電話番号を使用できます。ボット自体は、入力するワンタイムコードを送信します。 この記事では、Golang言語でこのようなボットを作成するプロセスについて説明します。
ボットの例すぐに注意したいのですが、この記事では、ワンタイムコードを使用してサイトにアクセスする実装については説明しません。すべてのコードはGitHubのリポジトリにありますUPD 02/07/2018: Telegram Login Widgetを使用して、
Telegramを使用したサイトへのログインを実装できるようになりました
目次:
- 必要なソフトウェア
- APIキーを取得する
- プロジェクト構造
- 設定ファイル
- ボットとデータベース接続の初期化
- メインコード
- ボットの打ち上げ
まず、必要なソフトウェアをすべてインストールする必要があります。
次に、将来のボット用のAPIキーを取得します。 これを行うには、ボットBotFatherを作成します。 およそ何が起こるべきか:

プログラミングを開始する前に、プロジェクトの構造を決定する必要があります。次のようにしました。
/project/ /conf/ settings.go /src/ database.go telegramBot.go main.go
コードの作成を始めましょう! まず、設定ファイル(settings.go):
const ( TELEGRAM_BOT_API_KEY = "paste your key here"
データベース内のユーザーごとに、チャットID(
chat_id )と携帯電話番号(
phone_number )が保存されます。 したがって、すぐに
ユーザー構造を作成し
ます 。
type User struct { Chat_ID int64 Phone_Number string }
DatabaseConnection構造を使用してMongoDBに接続します。
type DatabaseConnection struct { Session *mgo.Session
ボットを
TelegramBot構造として表します。
type TelegramBot struct { API *tgbotapi.BotAPI
MongoDBを使用した接続初期化関数:
func (connection *DatabaseConnection) Init() { session, err := mgo.Dial(conf.MONGODB_CONNECTION_URL)
ボット初期化関数:
func (telegramBot *TelegramBot) Init() { botAPI, err := tgbotapi.NewBotAPI(conf.TELEGRAM_BOT_API_KEY)
ボットは初期化されますが、何もする方法がまだわかりません。 続けましょう!
次のステップは「ボットのメインサイクル」です。
func (telegramBot *TelegramBot) Start() { for update := range telegramBot.Updates { if update.Message != nil {
これは無限のサイクルです。 すべての着信メッセージの処理は、それから始まります。 処理の開始時に、ユーザーがデータベースに存在するかどうかを確認する必要があります。 いいえ-番号を作成してリクエストします、あります-処理を続行します。
最初の処理が記述されました。次に、データベースとの通信を記述しましょう。
var Connection DatabaseConnection
これらはすべて便利な機能です。 ボットについては、メッセージ処理と連絡先分析を継続するための関数を記述する必要があります。
func (telegramBot *TelegramBot) analyzeUser(update tgbotapi.Update) { chatID := update.Message.Chat.ID user, err := Connection.GetUser(chatID)
ボットの準備が整いました! 実行するためだけに残ります。 これを行うには、
main.goに書き込み
ます 。
var telegramBot src.TelegramBot func main() { src.Connection.Init()
その結果、ユーザーに自分の番号を尋ねるボットを取得しました。この番号はシステムでさらに使用されます。 ボットは改善することができ、改善する必要があり、サイトとの統合を追加し、ワンタイムパスワードでログインします。
間違いなく、このシステムには欠点がありますが、その中で最も明白なのは、テレグラムの依存性(APIの変更、ブロッキング)です。 私にとって、これは電子メールやSMSの代替として最適です。使用するかどうかはあなた次第です。 ご清聴ありがとうございました!