2016-08-26 25 views
2

私は、ユーザーからの入力としてグループを受け取らなければならないボットを構築しています。そのため、ユーザーはXアクションを実行するグ​​ループを知ることができます。どうやってするか?私のボットはテレグラムのユーザーからグループIDを取得する方法はありますか?

私はpoll-botのようなコールバックデータを持っていると思っていましたが、ユーザーがグループに何か書き込む必要はありません(はい、ユーザーとボットはグループ内にあります)。

私はまた、グループ(ボットがある)からすべてのユーザーを含むデータベースにフィードを与え、ユーザーにどのグループを頼んでもらうことを考えましたが、テレグラムAPIでこれを行う方法はまだありません。

ありがとうございます!

答えて

0

すべてのグループチャットとシングルチャットにはchat_idがあります。チャットが存在する限り変更されません。 chat_idを知るには、このようなボットを使うことができます。メッセージを受け取ったチャットのチャットIDで常に応答します。

from telegram.ext import Updater 

def echo(bot, update): 
    bot.sendMessage(chat_id=update.message.chat_id, text="Your chat ID is " + str(update.message.chat_id)) 

updater = Updater(token='BOT_TOKEN') 
dispatcher = updater.dispatcher 
dispatcher.add_handler(MessageHandler(Filters.text, echo)) 

このチャットIDを使用するには、いくつかのXアクションを実行します。それは変更されないので、スクリプト内に変数として保存することができます。

あなたが何らかのXアクションを実行したいグループをユーザーが選択できるようにするには、まずユーザーがメンバーであるすべてのグループを知る必要があります。この情報を受け取る方法はありませんテレグラム。ボットの所有者は、すべてのユーザーグループを知ることができます。私はこれがどんなユーザでも望んでいるとは思わない。

私の考えでは、ユーザーにグループIDを指定させることをお勧めします。

def some_X_action(bot, update, args): 
    if (len(args) <= 0): 
     bot.sendMessage(chat_id=update.message.chat_id, text="usage: /Xaction groupID") 
     return 
    bot.sendMessage(chat_id=args[0], text="sending message in group with ID " + args[0]) 

dispatcher.add_handler(CommandHandler('Xaction', some_X_action, pass_args=True)) 

たぶん、あなたは覚えやすい「ニュース・チャット」か何かのように、chat_idのエイリアスを作成する可能性があります。

0

ディープリンクを使用して、ボットをグループに追加するようにユーザーに依頼することができます。ユーザーがグループを選択すると、そのグループのchat_idをyoutデータベースのユーザーのchat_idにリンクします。 次回は、タスクを実行したいときに、リンクされたすべてのグループを表示するだけです。

+0

匿名性はアプリケーションの一部であり、それはちょっと分かりません。それは最初のユーザーにとってはうまくいくでしょう。残りのユーザーは新しいユーザーイベントを聞く必要がありますが、それは私にとってスケーラブルではありません。 –

関連する問題