将带有电报机器人的共享按钮发送到频道

时间:2018-04-25 06:20:53

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

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

$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 ,那么此代码适用于bot channel_telegram_id user_telegram_id 在这种情况下我没有问题)

1 个答案:

答案 0 :(得分:1)

如果要将邮件发送到公共频道,可以将用户名替换为ID。 例如:@channelname

$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. 现在您可以将频道转换为私有(通过删除频道的链接)并将消息直接发送到此chat_id“-1001005582487” https://api.telegram.org/bot111:222/sendMessage?chat_id=-1001005582487&text=123
  4. 如果您需要更详细的说明,请阅读this page