Отправить кнопку поделиться с ботом Telegram в канал - PullRequest
0 голосов
/ 25 апреля 2018

Я сделал бот телеграммы.Теперь я хочу отправить кнопку обмена сообщениями в канал.

$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);

Теперь, если вместо $ id для любого пользователя я установлю user_telegram_id ,код работает!Но если я установлю channel_telegram_id (в котором робот является администратором) вместо $ id , это не сработает!Что мне делать?

(Также, если я использую url и не использую switch_inline_query , то этот код работает для бота channel_telegram_id и user_telegram_id и у меня нет проблем в этом случае)

1 Ответ

0 голосов
/ 27 апреля 2018

Если вы хотите отправить сообщение на общедоступный канал, вы можете поместить имя пользователя вместо идентификатора. Например: @ 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

Если вам нужно более подробное объяснение, прочитайте эту страницу

...