【问题标题】:Telegram Bot, answer in private chatTelegram Bot,私聊回复
【发布时间】:2018-07-10 13:03:33
【问题描述】:

我正在设置一个 Telegram 机器人,一切正常,但现在我希望机器人在私人聊天中回答小组中询问的特定命令。我使用的是 Python 3.x。

如何获取 Bot 与用户私聊的聊天 ID?

【问题讨论】:

    标签: python python-3.x telegram telegram-bot python-telegram-bot


    【解决方案1】:

    Telegram API 将其命名为chat_id。您可以向chat_id 发送消息,该消息进入私人聊天。

    请记住,机器人无法启动对话(聊天对话、私人聊天),除非用户先启动它。

    【讨论】:

    • 但是如果我让chat_id=update.message.chat_id 机器人在群聊中回答
    • 如果您的机器人没有与特定用户进行任何私人对话,则您无法向他们发送消息。
    • 我知道,但是如果和用户有对话,我怎样才能得到chat_id
    • @WlanWerner 获取对话的chat_id,就是这样。
    • @Kraay89,你没有记录 convos,Telegram 已经有了你的 convos。首先你会得到对话框。每个对话都有参与者 chat_ids。如果您没有任何对话,则无法获取他们的 chat_id,因此无法与他们交谈。
    【解决方案2】:

    Update 包含一条消息,告诉您是谁发送的。 用户的chat_id 等于User 对象的id

    您可以按以下方式检索它:

    chat_id = update.message.from.id
    

    【讨论】:

      【解决方案3】:

      如果你想在 pm 中回复用户(从 group 切换到 pm)...

      使用:text = "http://telegram.me/<Bot_Username>?start=start"

      将 '' 替换为 *您的机器人用户名(不包括“”),

      例如:“http://telegram.me/jesvi_bot?start=start”会直接带我到我的机器人的下午

      将此作为回复文本/链接发送到目标组中,并在目标用户单击它时将其重定向到机器人私人消息。..

      所以一个完整的例子是:

      update.message.reply_text(text="http://telegram.me/jesvi_bot?start=start")
      

      在这种情况下,“jesvi_bot”指的是我的机器人的用户名,并将其替换为您的机器人的用户名。

      【讨论】:

      猜你喜欢
      • 2021-06-20
      • 1970-01-01
      • 2017-08-07
      • 2020-04-14
      • 2021-04-06
      • 2015-12-02
      • 1970-01-01
      • 2019-10-01
      • 2020-10-04
      相关资源
      最近更新 更多