Предпочтительный способ установки этого расширения через composer.
Либо беги
php composer.phar require aki/yii2-bot-telegram "*"
или добавить
"aki/yii2-bot-telegram": "*"
в требуемый раздел вашего composer.json
файла.
getMe
sendMessage
forwardMessage
sendPhoto
sendAudio
sendDocument
sendSticker
sendVideo
sendLocation
sendChatAction
getUserProfilePhotos
getUpdates
setWebhook
getChat
getChatAdministrators
getChatMembersCount
getChatMember
answerCallbackQuery
editMessageText
editMessageCaption
sendGame
Game
Animation
CallbackGame
getGameHighScores
GameHighScore
answerInlineQuery
setChatStickerSet
deleteChatStickerSet
leaveChat
pinChatMessage
unpinChatMessage
setChatDescription
setChatTitle
deleteChatPhoto
exportChatInviteLink
promoteChatMember
restrictChatMember
unbanChatMember
kickChatMember
editMessageLiveLocation
stopMessageLiveLocation
сначала добавьте в config.php
<?php
'components' => [
'telegram' => [
'class' => 'aki\telegram\Telegram',
'botToken' => '112488045:AAGs6CVXgaqC92pvt1u0L6Azfsdfd',
]
]
?>
После установки расширения просто используйте его в своем коде:
<?php Yii::$app->telegram->sendMessage([
'chat_id' => $chat_id,
'text' => 'test',
]); ?>
отправить сообщение со встроенной клавиатурой:
<?php Yii::$app->telegram->sendMessage([
'chat_id' => $chat_id,
'text' => 'this is test',
'reply_markup' => json_encode([
'inline_keyboard'=>[
[
['text'=>"refresh",'callback_data'=> time()]
]
]
]),
]); ?>
отправить фото:
<?php
Yii::$app->telegram->sendPhoto([
'chat_id' => $chat_id,
'photo' => Yii::$app->getBaseUrl().'/uploads/test.jpg',
'caption' => 'this is test'
]); ?>
Прежде всего вам нужно отключить enableCsrfValidation в контроллере.
Бот работает с вашего сервера. Но когда мы начнем запускать бота из приложения Телеграмма /start
, запрос не достигает
действия внутри контроллера, потому что Телеграмм отправляет запрос в POST без csrf, в этом случае будет ошибка Bad
Request (# 400).
class SiteController extends Controller
{
public $enableCsrfValidation = false;
public function actionIndex()
{
$res = Yii::$app->telegram->sendMessage([
'chat_id' => $chat_id,
'text' => 'hello world!!'
]);
}
}
Вы можете использовать:
$telegram->input->message->chat->id
для получения chat_id
Пример класса виджета:
$res = Yii::$app->telegram->sendMessage([
'chat_id' => $telegram->input->message->chat->id,
'text' => "salam"
]);
Как пользоваться командой
use aki\telegram\base\Command;
Command::run("/start", function($telegram){
$result = $telegram->sendMessage([
'chat_id' => $telegram->input->message->chat->id,
"text" => "hello"
]);
});