Шаблон файла
package Button_name; use strict; use warnings FATAL => 'all'; #********************************************************** =head2 new() =cut #********************************************************** sub new { my $class = shift; my ($db, $admin, $conf, $bot, undef, $APILayer) = @_; my $self = { db => $db, admin => $admin, conf => $conf, bot => $bot, api => $APILayer }; bless($self, $class); return $self; } #********************************************************** =head2 btn_name() =cut #********************************************************** sub btn_name { return "Название кнопки"; } #********************************************************** =head2 click() =cut #********************************************************** sub click { my $self = shift; my ($attr) = @_; # Что-то делаем по нажатию кнопки. Например отправляем "Привет". $self->{bot}->send_message({ text => "Привет", }); return 1; } 1;
Отправка сообщения
#Создаем текст сообщения, для кавычек обязательно тройное экранирование my $message = "Пример сообщения\n"; $message .= "<b>Жирный текст</b>\n"; $message .= "<a href=\\\"google.com\\\">Пример ссылки</a>"; #Отправляем сообщение $self->{bot}->send_message({ text => $message, parse_mode => 'HTML' });
Отправка сообщения с встроеной кнопкой
$self->{bot}->send_message({ text => "Текст сообщения", reply_markup => { inline_keyboard => [[{ text => "Кнопка в сообщении", callback_data => "button_name&fn_name" }]], } }); # После нажатия этой кнопки бот запустит функцию fn_name из файла button_name.
Отправка сообщения с ссылкой
$self->{bot}->send_message({ text => "Текст сообщения", reply_markup => { inline_keyboard => [[{ text => "Кнопка с ссылкой", url => "http://abills.net.ua" }]], } });
Отправка сообщения с заменой клавиатуры (многоуровневая операция)
# Внимание! Для использование многоуровневых операций необходимо понимать что это такое. # Иначе вы рискуете сделать бота полностью неработоспособным. $self->{bot}->send_message({ text => 'Вы на втором шаге какой-то операции.\nОтправьте текст или нажмите <b>Отменить</b>', reply_markup => { keyboard => [[{ text => "Отменить", }]], resize_keyboard => "true", }, parse_mode => 'HTML' }); # Запись в базу о том, что пользователь находится на втором шаге операции. # При любом его действии будет вызываться &Button_name::fn_name # Не забудьте удалить после завершения операции. $self->{bot_db}->add({ UID => $self->{bot}->{uid}, BUTTON => "Button_name", FN => "fn_name", ARGS => "дополнительные аргументы", });
Пример вызова через API
# Пример вызова API за авторизацией USERBOT. my ($res) = $self->{api}->fetch_api({ METHOD => 'GET', PATH => '/user/pi/' }); if ($res->{errno}) { $self->{bot}->send_message({ text => "Случилась ошибка, не могу узнать ваше ФИО:(" }); return; } $self->{bot}->send_message({ text => "Здравствуйте, " . $res->{fio} . "!" });