每个群聊和单聊都有一个 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 创建别名,例如“news-chat”或易于记忆的名称。