92 lines
1.7 KiB
C++
92 lines
1.7 KiB
C++
#pragma once
|
|
|
|
#include <cstdint>
|
|
#include <string>
|
|
#include <vector>
|
|
#include <ostream>
|
|
|
|
// interface
|
|
class ReplyMarkup {
|
|
public:
|
|
ReplyMarkup() {}
|
|
virtual ~ReplyMarkup() {}
|
|
};
|
|
|
|
|
|
class InlineButton {
|
|
public:
|
|
virtual ~InlineButton() {}
|
|
|
|
enum class ButtonType : uint32_t {
|
|
CALLBACK = 0,
|
|
CALLBACKPASSWORD,
|
|
LOGINURL,
|
|
SWITCHINLINE,
|
|
URL
|
|
};
|
|
|
|
static const std::string ButtonTypeTypes[];
|
|
static const std::string& getButtonTypeString(ButtonType t);
|
|
|
|
std::string text;
|
|
|
|
virtual ButtonType getButtonType() const = 0;
|
|
virtual void write(std::ostream& os) const = 0;
|
|
};
|
|
|
|
class InlineCallbackButton : public InlineButton {
|
|
public:
|
|
|
|
std::string data;
|
|
|
|
virtual ButtonType getButtonType() const override;
|
|
virtual void write(std::ostream& os) const override;
|
|
};
|
|
|
|
class InlineCallbackPasswordButton : public InlineButton {
|
|
public:
|
|
|
|
std::string data;
|
|
|
|
virtual ButtonType getButtonType() const override;
|
|
virtual void write(std::ostream& os) const override;
|
|
};
|
|
|
|
class InlineLoginURLButton : public InlineButton {
|
|
public:
|
|
|
|
std::string url;
|
|
int32_t id;
|
|
std::string forwardText;
|
|
|
|
virtual ButtonType getButtonType() const override;
|
|
virtual void write(std::ostream& os) const override;
|
|
};
|
|
|
|
class InlineSwitchInlineButton : public InlineButton {
|
|
public:
|
|
|
|
std::string query;
|
|
bool inCurrentChat;
|
|
|
|
virtual ButtonType getButtonType() const override;
|
|
virtual void write(std::ostream& os) const override;
|
|
};
|
|
|
|
class InlineURLButton : public InlineButton {
|
|
public:
|
|
|
|
std::string url;
|
|
|
|
virtual ButtonType getButtonType() const override;
|
|
virtual void write(std::ostream& os) const override;
|
|
};
|
|
|
|
class InlineReplyMarkup : public ReplyMarkup {
|
|
public:
|
|
virtual ~InlineReplyMarkup();
|
|
|
|
std::vector<InlineButton*> buttons;
|
|
};
|
|
|