| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138 |
- /*
- This file is part of Telegram Desktop,
- the official desktop application for the Telegram messaging service.
- For license and copyright information please follow this link:
- https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
- */
- #pragma once
- #include "base/flags.h"
- #include "data/data_chat_participant_status.h"
- namespace Data {
- class Session;
- } // namespace Data
- namespace InlineBots {
- enum class PeerType : uint8;
- using PeerTypes = base::flags<PeerType>;
- } // namespace InlineBots
- [[nodiscard]] InlineBots::PeerTypes PeerTypesFromMTP(
- const MTPvector<MTPInlineQueryPeerType> &types);
- enum class ReplyMarkupFlag : uint32 {
- None = (1U << 0),
- ForceReply = (1U << 1),
- HasSwitchInlineButton = (1U << 2),
- Inline = (1U << 3),
- Resize = (1U << 4),
- SingleUse = (1U << 5),
- Selective = (1U << 6),
- IsNull = (1U << 7),
- OnlyBuyButton = (1U << 8),
- Persistent = (1U << 9),
- };
- inline constexpr bool is_flag_type(ReplyMarkupFlag) { return true; }
- using ReplyMarkupFlags = base::flags<ReplyMarkupFlag>;
- struct RequestPeerQuery {
- enum class Type : uchar {
- User,
- Group,
- Broadcast,
- };
- enum class Restriction : uchar {
- Any,
- Yes,
- No,
- };
- int maxQuantity = 0;
- Type type = Type::User;
- Restriction userIsBot = Restriction::Any;
- Restriction userIsPremium = Restriction::Any;
- Restriction groupIsForum = Restriction::Any;
- Restriction hasUsername = Restriction::Any;
- bool amCreator = false;
- bool isBotParticipant = false;
- ChatAdminRights myRights = {};
- ChatAdminRights botRights = {};
- };
- static_assert(std::is_trivially_copy_assignable_v<RequestPeerQuery>);
- struct HistoryMessageMarkupButton {
- enum class Type {
- Default,
- Url,
- Callback,
- CallbackWithPassword,
- RequestPhone,
- RequestLocation,
- RequestPoll,
- RequestPeer,
- SwitchInline,
- SwitchInlineSame,
- Game,
- Buy,
- Auth,
- UserProfile,
- WebView,
- SimpleWebView,
- CopyText,
- };
- HistoryMessageMarkupButton(
- Type type,
- const QString &text,
- const QByteArray &data = QByteArray(),
- const QString &forwardText = QString(),
- int64 buttonId = 0);
- static HistoryMessageMarkupButton *Get(
- not_null<Data::Session*> owner,
- FullMsgId itemId,
- int row,
- int column);
- Type type;
- QString text, forwardText;
- QByteArray data;
- int64 buttonId = 0;
- InlineBots::PeerTypes peerTypes = 0;
- mutable mtpRequestId requestId = 0;
- };
- struct HistoryMessageMarkupData {
- HistoryMessageMarkupData() = default;
- explicit HistoryMessageMarkupData(const MTPReplyMarkup *data);
- void fillForwardedData(const HistoryMessageMarkupData &original);
- [[nodiscard]] bool isNull() const;
- [[nodiscard]] bool isTrivial() const;
- using Button = HistoryMessageMarkupButton;
- std::vector<std::vector<Button>> rows;
- ReplyMarkupFlags flags = ReplyMarkupFlag::IsNull;
- QString placeholder;
- private:
- void fillRows(const QVector<MTPKeyboardButtonRow> &v);
- };
- struct HistoryMessageRepliesData {
- HistoryMessageRepliesData() = default;
- explicit HistoryMessageRepliesData(const MTPMessageReplies *data);
- std::vector<PeerId> recentRepliers;
- ChannelId channelId = 0;
- MsgId readMaxId = 0;
- MsgId maxId = 0;
- int repliesCount = 0;
- bool isNull = true;
- int pts = 0;
- };
|