有没有什么方法可以通过单击嵌入式键盘将消息发送到电报机器人?

时间:2019-05-06 07:03:19

标签: laravel telegram-bot

我有一个答复标记键盘。我为其回调数据设置了一个user_id。有什么方法可以将文本消息发送到按下按钮时在回调数据中设置的ID? 谢谢。

1 个答案:

答案 0 :(得分:0)

  

...我为其回调数据设置了一个user_id

您无需将user_id的按钮上的callback_data设置为InlineKeyboard

用户点击按钮时,您将收到一个包含用户ID的Updateupdate.callback_query.from.id

  

有什么方法可以将文本消息发送到按下按钮时在回调数据中设置的ID?

鉴于用户的ID,机器人可以使用方法sendMessage发送消息。将用户的ID作为chat_id参数传递。


  

当用户敲击嵌入式键盘时,用户将重定向到嵌入式键盘的url中设置的url,然后在数据库中添加用户的分数,这就是为什么我需要url和回调数据的原因。网址和用户在我数据库中的得分。当用户单击嵌入式键盘时,我想添加网址的计数器和用户的计数

从技术上讲,您不能在callback_data中放置URL InlineKeyboardButton。来自docs

  

InlineKeyboardButton。此对象表示嵌入式键盘的一个按钮。您必须完全使用一个可选字段

因此,机器人将无法知道用户是否按下了带有URL的按钮。

我在这里看到的唯一可能的解决方法是将另一个Web服务器用作“代理”。这是我的主意:

  1. Bot向用户发送InlineKeyboard。键盘包含带有指向您的网站的网址的按钮,例如https://example.com?url=<URL_ID>&user=<TELEGRAM_USER_ID>
  2. URL_ID是目标站点或其ID /哈希,TELEGRAM_USER_ID是电报用户的ID或其哈希
  3. 您的Web服务器在数据库中增加计数器,并将用户重定向到目标站点。