【问题标题】:Send share button with telegram's bot into a channel将带有电报机器人的共享按钮发送到频道
【发布时间】:2018-10-05 12:25:41
【问题描述】:

我做了一个电报机器人。现在我想将帖子的分享按钮发送到频道中。

$btn =array('inline_keyboard'=>
    array(
        array(
            array(
                'text'=> 'share', 
                'switch_inline_query'=>"1111"
            )
        )   
    )
);
$btn = json_encode($btn);
$content = array
    (
        'chat_id' => $id,
        'reply_markup' => $btn, 
        'text' => $textt,
    );
$bot->sendMessage($content);

现在,如果我设置任何用户的 user_telegram_id 而不是 $id,则此代码有效! 但是如果我设置 channel_telegram_id (其中机器人是管理员)而不是 $id 这不起作用!我该怎么办?

(另外,如果我使用 url 而不使用 switch_inline_query,那么此代码适用于机器人 channel_telegram_iduser_telegram_id强>在这种情况下我没有问题)

【问题讨论】:

  • 要在频道中发送消息吗?

标签: telegram telegram-bot php-telegram-bot


【解决方案1】:

如果您想将消息发送到公共频道,您可以使用用户名代替 ID。 例如:@频道名

$content = array
(
    'chat_id' => @channelname,
    'reply_markup' => $btn, 
    'text' => $textt,
);

但如果您想将消息发送到私人频道,您可以按照以下步骤操作:

  1. 您应该使用一些@channelName 将其转换为公共,并通过 Bot API 将消息发送到此频道 https://api.telegram.org/bot111:222/sendMessage?chat_id=@channelName&text=123
  2. 作为响应,您将获得包含您频道的chat_id 的信息。{ "ok" : true, "result" : { "chat" : { "id" : -1001005582487, "title" : "Test Private Channel", "type" : "channel" }, "date" : 1448245538, "message_id" : 7, "text" : "123ds" } }
  3. 现在您可以将频道转换回私人频道(通过删除频道的链接)并将消息直接发送到此聊天 ID“-1001005582487” https://api.telegram.org/bot111:222/sendMessage?chat_id=-1001005582487&text=123

如果您需要更详细的解释,请阅读this page

【讨论】:

  • 你没听懂我说的话!!!我可以使用频道的 id 或频道的 username 向频道发送消息。问题是这样的: switch_inline_query 不适用于通过机器人的频道。当我使用 switch_inline_query 制作内联键盘时,无法将其发送到带有 bot 本身的频道,因此我必须使用 bot 制作内联键盘并获取由 bot 制作的帖子然后分享它在频道!请详细阅读我的问题...
猜你喜欢
  • 2016-07-18
  • 2016-05-03
  • 2020-08-25
  • 2022-06-17
  • 2021-04-08
  • 2020-08-25
  • 2022-09-28
  • 2020-10-10
  • 1970-01-01
相关资源
最近更新 更多