我正在建立一个机器人,它必须接收一个组作为用户的输入,以便它知道用户想要做什么组的X动作。怎么做?
我认为deep linking有一些回调数据就像poll-bot那样,但问题是我不希望用户在组上写任何东西(是的,用户和僵尸程序)在小组中。)
我还考虑过向一个组(机器人所在的位置)的所有用户提供数据库,然后询问用户他想要哪个组,但仍然没有办法用电报机器人API。
谢谢!
答案 0 :(得分: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))
要执行某些X操作,您可以使用此chat_id。它不会改变,因此您只需将它们存储为脚本中的变量即可。
如果你想让用户选择他想要做什么组的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创建别名,例如“新闻聊天”或易于记忆的内容。
答案 1 :(得分:0)
您可以使用深层链接要求用户将您的机器人添加到该组;当用户选择一个组时,您将该组的chat_id链接到用户在yout数据库上的chat_id; 下次您的用户想要执行任务时,您只需显示所有链接的组。