Child pages
  • Создание кнопок для бота

Skip to end of metadata
Go to start of metadata
Шаблон файла
package Button_name;

use strict;
use warnings FATAL => 'all';

#**********************************************************
=head2 new($Botapi)

=cut
#**********************************************************
sub new {
  my $class = shift;
  my ($db, $admin, $conf, $bot) = @_;
  
  my $self = {
    db    => $db,
    admin => $admin,
    conf  => $conf,
    bot   => $bot,
  };
  
  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;
Отправка сообщения
$self->{bot}->send_message({
  text => "Текст сообщения",
});


Отправка сообщения с встроеной кнопкой
$self->{bot}->send_message({
  text => "Текст сообщения",
  reply_markup => {
    inline_keyboard => [[{
      text          => "Кнопка в сообщении",
      callback_data => "button_name&fn_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   => "дополнительные аргументы",
});
  • No labels