Add story-related administrator rights.
This commit is contained in:
parent
08639b520a
commit
3c977a0f99
@ -660,8 +660,11 @@ chatPermissions can_send_basic_messages:Bool can_send_audios:Bool can_send_docum
|
|||||||
//@can_manage_topics True, if the administrator can manage topics; applicable to forum supergroups only
|
//@can_manage_topics True, if the administrator can manage topics; applicable to forum supergroups only
|
||||||
//@can_promote_members True, if the administrator can add new administrators with a subset of their own privileges or demote administrators that were directly or indirectly promoted by them
|
//@can_promote_members True, if the administrator can add new administrators with a subset of their own privileges or demote administrators that were directly or indirectly promoted by them
|
||||||
//@can_manage_video_chats True, if the administrator can manage video chats
|
//@can_manage_video_chats True, if the administrator can manage video chats
|
||||||
|
//@can_post_stories True, if the administrator can create new channel stories, or edit and delete posted stories; applicable to channels only
|
||||||
|
//@can_edit_stories True, if the administrator can edit stories of other users, pin stories and access story archive; applicable to channels only
|
||||||
|
//@can_delete_stories True, if the administrator can delete stories of other users; applicable to channels only
|
||||||
//@is_anonymous True, if the administrator isn't shown in the chat member list and sends messages anonymously; applicable to supergroups only
|
//@is_anonymous True, if the administrator isn't shown in the chat member list and sends messages anonymously; applicable to supergroups only
|
||||||
chatAdministratorRights can_manage_chat:Bool can_change_info:Bool can_post_messages:Bool can_edit_messages:Bool can_delete_messages:Bool can_invite_users:Bool can_restrict_members:Bool can_pin_messages:Bool can_manage_topics:Bool can_promote_members:Bool can_manage_video_chats:Bool is_anonymous:Bool = ChatAdministratorRights;
|
chatAdministratorRights can_manage_chat:Bool can_change_info:Bool can_post_messages:Bool can_edit_messages:Bool can_delete_messages:Bool can_invite_users:Bool can_restrict_members:Bool can_pin_messages:Bool can_manage_topics:Bool can_promote_members:Bool can_manage_video_chats:Bool can_post_stories:Bool can_edit_stories:Bool can_delete_stories:Bool is_anonymous:Bool = ChatAdministratorRights;
|
||||||
|
|
||||||
|
|
||||||
//@description Describes an option for buying Telegram Premium to a user
|
//@description Describes an option for buying Telegram Premium to a user
|
||||||
|
@ -28,10 +28,11 @@ AdministratorRights::AdministratorRights(const tl_object_ptr<telegram_api::chatA
|
|||||||
if (!rights->other_) {
|
if (!rights->other_) {
|
||||||
LOG(ERROR) << "Receive wrong other flag in " << to_string(rights);
|
LOG(ERROR) << "Receive wrong other flag in " << to_string(rights);
|
||||||
}
|
}
|
||||||
*this = AdministratorRights(rights->anonymous_, rights->other_, rights->change_info_, rights->post_messages_,
|
*this =
|
||||||
rights->edit_messages_, rights->delete_messages_, rights->invite_users_,
|
AdministratorRights(rights->anonymous_, rights->other_, rights->change_info_, rights->post_messages_,
|
||||||
rights->ban_users_, rights->pin_messages_, rights->manage_topics_, rights->add_admins_,
|
rights->edit_messages_, rights->delete_messages_, rights->invite_users_, rights->ban_users_,
|
||||||
rights->manage_call_, channel_type);
|
rights->pin_messages_, rights->manage_topics_, rights->add_admins_, rights->manage_call_,
|
||||||
|
rights->post_stories_, rights->edit_stories_, rights->delete_stories_, channel_type);
|
||||||
}
|
}
|
||||||
|
|
||||||
AdministratorRights::AdministratorRights(const td_api::object_ptr<td_api::chatAdministratorRights> &rights,
|
AdministratorRights::AdministratorRights(const td_api::object_ptr<td_api::chatAdministratorRights> &rights,
|
||||||
@ -44,6 +45,7 @@ AdministratorRights::AdministratorRights(const td_api::object_ptr<td_api::chatAd
|
|||||||
rights->can_post_messages_, rights->can_edit_messages_, rights->can_delete_messages_,
|
rights->can_post_messages_, rights->can_edit_messages_, rights->can_delete_messages_,
|
||||||
rights->can_invite_users_, rights->can_restrict_members_, rights->can_pin_messages_,
|
rights->can_invite_users_, rights->can_restrict_members_, rights->can_pin_messages_,
|
||||||
rights->can_manage_topics_, rights->can_promote_members_, rights->can_manage_video_chats_,
|
rights->can_manage_topics_, rights->can_promote_members_, rights->can_manage_video_chats_,
|
||||||
|
rights->can_post_stories_, rights->can_edit_stories_, rights->can_delete_stories_,
|
||||||
channel_type);
|
channel_type);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -51,6 +53,7 @@ AdministratorRights::AdministratorRights(bool is_anonymous, bool can_manage_dial
|
|||||||
bool can_post_messages, bool can_edit_messages, bool can_delete_messages,
|
bool can_post_messages, bool can_edit_messages, bool can_delete_messages,
|
||||||
bool can_invite_users, bool can_restrict_members, bool can_pin_messages,
|
bool can_invite_users, bool can_restrict_members, bool can_pin_messages,
|
||||||
bool can_manage_topics, bool can_promote_members, bool can_manage_calls,
|
bool can_manage_topics, bool can_promote_members, bool can_manage_calls,
|
||||||
|
bool can_post_stories, bool can_edit_stories, bool can_delete_stories,
|
||||||
ChannelType channel_type) {
|
ChannelType channel_type) {
|
||||||
switch (channel_type) {
|
switch (channel_type) {
|
||||||
case ChannelType::Broadcast:
|
case ChannelType::Broadcast:
|
||||||
@ -61,6 +64,9 @@ AdministratorRights::AdministratorRights(bool is_anonymous, bool can_manage_dial
|
|||||||
case ChannelType::Megagroup:
|
case ChannelType::Megagroup:
|
||||||
can_post_messages = false;
|
can_post_messages = false;
|
||||||
can_edit_messages = false;
|
can_edit_messages = false;
|
||||||
|
can_post_stories = false;
|
||||||
|
can_edit_stories = false;
|
||||||
|
can_delete_stories = false;
|
||||||
break;
|
break;
|
||||||
case ChannelType::Unknown:
|
case ChannelType::Unknown:
|
||||||
break;
|
break;
|
||||||
@ -76,6 +82,9 @@ AdministratorRights::AdministratorRights(bool is_anonymous, bool can_manage_dial
|
|||||||
(static_cast<uint64>(can_manage_topics) * CAN_MANAGE_TOPICS) |
|
(static_cast<uint64>(can_manage_topics) * CAN_MANAGE_TOPICS) |
|
||||||
(static_cast<uint64>(can_promote_members) * CAN_PROMOTE_MEMBERS) |
|
(static_cast<uint64>(can_promote_members) * CAN_PROMOTE_MEMBERS) |
|
||||||
(static_cast<uint64>(can_manage_calls) * CAN_MANAGE_CALLS) |
|
(static_cast<uint64>(can_manage_calls) * CAN_MANAGE_CALLS) |
|
||||||
|
(static_cast<uint64>(can_post_stories) * CAN_POST_STORIES) |
|
||||||
|
(static_cast<uint64>(can_edit_stories) * CAN_EDIT_STORIES) |
|
||||||
|
(static_cast<uint64>(can_delete_stories) * CAN_DELETE_STORIES) |
|
||||||
(static_cast<uint64>(is_anonymous) * IS_ANONYMOUS);
|
(static_cast<uint64>(is_anonymous) * IS_ANONYMOUS);
|
||||||
if (flags_ != 0) {
|
if (flags_ != 0) {
|
||||||
flags_ |= CAN_MANAGE_DIALOG;
|
flags_ |= CAN_MANAGE_DIALOG;
|
||||||
@ -120,6 +129,15 @@ telegram_api::object_ptr<telegram_api::chatAdminRights> AdministratorRights::get
|
|||||||
if (can_manage_dialog()) {
|
if (can_manage_dialog()) {
|
||||||
flags |= telegram_api::chatAdminRights::OTHER_MASK;
|
flags |= telegram_api::chatAdminRights::OTHER_MASK;
|
||||||
}
|
}
|
||||||
|
if (can_post_stories()) {
|
||||||
|
flags |= telegram_api::chatAdminRights::POST_STORIES_MASK;
|
||||||
|
}
|
||||||
|
if (can_edit_stories()) {
|
||||||
|
flags |= telegram_api::chatAdminRights::EDIT_STORIES_MASK;
|
||||||
|
}
|
||||||
|
if (can_delete_stories()) {
|
||||||
|
flags |= telegram_api::chatAdminRights::DELETE_STORIES_MASK;
|
||||||
|
}
|
||||||
if (is_anonymous()) {
|
if (is_anonymous()) {
|
||||||
flags |= telegram_api::chatAdminRights::ANONYMOUS_MASK;
|
flags |= telegram_api::chatAdminRights::ANONYMOUS_MASK;
|
||||||
}
|
}
|
||||||
@ -134,7 +152,8 @@ td_api::object_ptr<td_api::chatAdministratorRights> AdministratorRights::get_cha
|
|||||||
return td_api::make_object<td_api::chatAdministratorRights>(
|
return td_api::make_object<td_api::chatAdministratorRights>(
|
||||||
can_manage_dialog(), can_change_info_and_settings(), can_post_messages(), can_edit_messages(),
|
can_manage_dialog(), can_change_info_and_settings(), can_post_messages(), can_edit_messages(),
|
||||||
can_delete_messages(), can_invite_users(), can_restrict_members(), can_pin_messages(), can_manage_topics(),
|
can_delete_messages(), can_invite_users(), can_restrict_members(), can_pin_messages(), can_manage_topics(),
|
||||||
can_promote_members(), can_manage_calls(), is_anonymous());
|
can_promote_members(), can_manage_calls(), can_post_stories(), can_edit_stories(), can_delete_stories(),
|
||||||
|
is_anonymous());
|
||||||
}
|
}
|
||||||
|
|
||||||
bool operator==(const AdministratorRights &lhs, const AdministratorRights &rhs) {
|
bool operator==(const AdministratorRights &lhs, const AdministratorRights &rhs) {
|
||||||
@ -180,6 +199,15 @@ StringBuilder &operator<<(StringBuilder &string_builder, const AdministratorRigh
|
|||||||
if (status.can_manage_calls()) {
|
if (status.can_manage_calls()) {
|
||||||
string_builder << "(voice chat)";
|
string_builder << "(voice chat)";
|
||||||
}
|
}
|
||||||
|
if (status.can_post_stories()) {
|
||||||
|
string_builder << "(post story)";
|
||||||
|
}
|
||||||
|
if (status.can_edit_stories()) {
|
||||||
|
string_builder << "(edit story)";
|
||||||
|
}
|
||||||
|
if (status.can_delete_stories()) {
|
||||||
|
string_builder << "(delete story)";
|
||||||
|
}
|
||||||
if (status.is_anonymous()) {
|
if (status.is_anonymous()) {
|
||||||
string_builder << "(anonymous)";
|
string_builder << "(anonymous)";
|
||||||
}
|
}
|
||||||
@ -434,15 +462,15 @@ DialogParticipantStatus DialogParticipantStatus::Banned(int32 banned_until_date)
|
|||||||
|
|
||||||
DialogParticipantStatus DialogParticipantStatus::GroupAdministrator(bool is_creator) {
|
DialogParticipantStatus DialogParticipantStatus::GroupAdministrator(bool is_creator) {
|
||||||
return Administrator(AdministratorRights(false, true, true, false, false, true, true, true, true, false, false, true,
|
return Administrator(AdministratorRights(false, true, true, false, false, true, true, true, true, false, false, true,
|
||||||
ChannelType::Unknown),
|
false, false, false, ChannelType::Unknown),
|
||||||
string(), is_creator);
|
string(), is_creator);
|
||||||
}
|
}
|
||||||
|
|
||||||
DialogParticipantStatus DialogParticipantStatus::ChannelAdministrator(bool is_creator, bool is_megagroup) {
|
DialogParticipantStatus DialogParticipantStatus::ChannelAdministrator(bool is_creator, bool is_megagroup) {
|
||||||
auto rights = is_megagroup ? AdministratorRights(false, true, true, false, false, true, true, true, true, true, false,
|
auto rights = is_megagroup ? AdministratorRights(false, true, true, false, false, true, true, true, true, true, false,
|
||||||
false, ChannelType::Megagroup)
|
false, false, false, false, ChannelType::Megagroup)
|
||||||
: AdministratorRights(false, true, false, true, true, true, false, true, false, false,
|
: AdministratorRights(false, true, false, true, true, true, false, true, false, false,
|
||||||
false, false, ChannelType::Broadcast);
|
false, false, true, true, true, ChannelType::Broadcast);
|
||||||
return Administrator(rights, string(), is_creator);
|
return Administrator(rights, string(), is_creator);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -34,12 +34,16 @@ class AdministratorRights {
|
|||||||
static constexpr uint64 CAN_MANAGE_CALLS = 1 << 9;
|
static constexpr uint64 CAN_MANAGE_CALLS = 1 << 9;
|
||||||
static constexpr uint64 CAN_MANAGE_DIALOG = 1 << 10;
|
static constexpr uint64 CAN_MANAGE_DIALOG = 1 << 10;
|
||||||
static constexpr uint64 CAN_MANAGE_TOPICS = 1 << 11;
|
static constexpr uint64 CAN_MANAGE_TOPICS = 1 << 11;
|
||||||
|
static constexpr uint64 LEGACY_CAN_SEND_MEDIA = 1 << 17;
|
||||||
|
static constexpr uint64 CAN_POST_STORIES = static_cast<uint64>(1) << 48;
|
||||||
|
static constexpr uint64 CAN_EDIT_STORIES = static_cast<uint64>(1) << 49;
|
||||||
|
static constexpr uint64 CAN_DELETE_STORIES = static_cast<uint64>(1) << 50;
|
||||||
static constexpr uint64 IS_ANONYMOUS = 1 << 13;
|
static constexpr uint64 IS_ANONYMOUS = 1 << 13;
|
||||||
|
|
||||||
static constexpr uint64 ALL_ADMINISTRATOR_RIGHTS = CAN_CHANGE_INFO_AND_SETTINGS | CAN_POST_MESSAGES |
|
static constexpr uint64 ALL_ADMINISTRATOR_RIGHTS =
|
||||||
CAN_EDIT_MESSAGES | CAN_DELETE_MESSAGES | CAN_INVITE_USERS |
|
CAN_CHANGE_INFO_AND_SETTINGS | CAN_POST_MESSAGES | CAN_EDIT_MESSAGES | CAN_DELETE_MESSAGES | CAN_INVITE_USERS |
|
||||||
CAN_RESTRICT_MEMBERS | CAN_PIN_MESSAGES | CAN_MANAGE_TOPICS |
|
CAN_RESTRICT_MEMBERS | CAN_PIN_MESSAGES | CAN_MANAGE_TOPICS | CAN_PROMOTE_MEMBERS | CAN_MANAGE_CALLS |
|
||||||
CAN_PROMOTE_MEMBERS | CAN_MANAGE_CALLS | CAN_MANAGE_DIALOG;
|
CAN_MANAGE_DIALOG | CAN_POST_STORIES | CAN_EDIT_STORIES | CAN_DELETE_STORIES;
|
||||||
|
|
||||||
uint64 flags_;
|
uint64 flags_;
|
||||||
|
|
||||||
@ -60,7 +64,8 @@ class AdministratorRights {
|
|||||||
AdministratorRights(bool is_anonymous, bool can_manage_dialog, bool can_change_info, bool can_post_messages,
|
AdministratorRights(bool is_anonymous, bool can_manage_dialog, bool can_change_info, bool can_post_messages,
|
||||||
bool can_edit_messages, bool can_delete_messages, bool can_invite_users,
|
bool can_edit_messages, bool can_delete_messages, bool can_invite_users,
|
||||||
bool can_restrict_members, bool can_pin_messages, bool can_manage_topics,
|
bool can_restrict_members, bool can_pin_messages, bool can_manage_topics,
|
||||||
bool can_promote_members, bool can_manage_calls, ChannelType channel_type);
|
bool can_promote_members, bool can_manage_calls, bool can_post_stories, bool can_edit_stories,
|
||||||
|
bool can_delete_stories, ChannelType channel_type);
|
||||||
|
|
||||||
telegram_api::object_ptr<telegram_api::chatAdminRights> get_chat_admin_rights() const;
|
telegram_api::object_ptr<telegram_api::chatAdminRights> get_chat_admin_rights() const;
|
||||||
|
|
||||||
@ -110,6 +115,18 @@ class AdministratorRights {
|
|||||||
return (flags_ & CAN_MANAGE_CALLS) != 0;
|
return (flags_ & CAN_MANAGE_CALLS) != 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool can_post_stories() const {
|
||||||
|
return (flags_ & CAN_POST_STORIES) != 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool can_edit_stories() const {
|
||||||
|
return (flags_ & CAN_EDIT_STORIES) != 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool can_delete_stories() const {
|
||||||
|
return (flags_ & CAN_DELETE_STORIES) != 0;
|
||||||
|
}
|
||||||
|
|
||||||
bool is_anonymous() const {
|
bool is_anonymous() const {
|
||||||
return (flags_ & IS_ANONYMOUS) != 0;
|
return (flags_ & IS_ANONYMOUS) != 0;
|
||||||
}
|
}
|
||||||
@ -427,6 +444,18 @@ class DialogParticipantStatus {
|
|||||||
return get_administrator_rights().can_manage_calls();
|
return get_administrator_rights().can_manage_calls();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool can_post_stories() const {
|
||||||
|
return get_administrator_rights().can_post_stories();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool can_edit_stories() const {
|
||||||
|
return get_administrator_rights().can_edit_stories();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool can_delete_stories() const {
|
||||||
|
return get_administrator_rights().can_delete_stories();
|
||||||
|
}
|
||||||
|
|
||||||
bool can_be_edited() const {
|
bool can_be_edited() const {
|
||||||
return (flags_ & CAN_BE_EDITED) != 0;
|
return (flags_ & CAN_BE_EDITED) != 0;
|
||||||
}
|
}
|
||||||
|
@ -121,6 +121,9 @@ static AdministratorRights get_administrator_rights(Slice rights, bool for_chann
|
|||||||
bool can_manage_topics = false;
|
bool can_manage_topics = false;
|
||||||
bool can_promote_members = false;
|
bool can_promote_members = false;
|
||||||
bool can_manage_calls = false;
|
bool can_manage_calls = false;
|
||||||
|
bool can_post_stories = false;
|
||||||
|
bool can_edit_stories = false;
|
||||||
|
bool can_delete_stories = false;
|
||||||
bool is_anonymous = false;
|
bool is_anonymous = false;
|
||||||
for (auto right : full_split(rights, ' ')) {
|
for (auto right : full_split(rights, ' ')) {
|
||||||
if (right == "change_info") {
|
if (right == "change_info") {
|
||||||
@ -143,6 +146,12 @@ static AdministratorRights get_administrator_rights(Slice rights, bool for_chann
|
|||||||
can_promote_members = true;
|
can_promote_members = true;
|
||||||
} else if (right == "manage_video_chats") {
|
} else if (right == "manage_video_chats") {
|
||||||
can_manage_calls = true;
|
can_manage_calls = true;
|
||||||
|
} else if (right == "post_stories") {
|
||||||
|
can_post_stories = true;
|
||||||
|
} else if (right == "edit_stories") {
|
||||||
|
can_edit_stories = true;
|
||||||
|
} else if (right == "delete_stories") {
|
||||||
|
can_delete_stories = true;
|
||||||
} else if (right == "anonymous") {
|
} else if (right == "anonymous") {
|
||||||
is_anonymous = true;
|
is_anonymous = true;
|
||||||
} else if (right == "manage_chat") {
|
} else if (right == "manage_chat") {
|
||||||
@ -151,7 +160,8 @@ static AdministratorRights get_administrator_rights(Slice rights, bool for_chann
|
|||||||
}
|
}
|
||||||
return AdministratorRights(is_anonymous, can_manage_dialog, can_change_info, can_post_messages, can_edit_messages,
|
return AdministratorRights(is_anonymous, can_manage_dialog, can_change_info, can_post_messages, can_edit_messages,
|
||||||
can_delete_messages, can_invite_users, can_restrict_members, can_pin_messages,
|
can_delete_messages, can_invite_users, can_restrict_members, can_pin_messages,
|
||||||
can_manage_topics, can_promote_members, can_manage_calls,
|
can_manage_topics, can_promote_members, can_manage_calls, can_post_stories,
|
||||||
|
can_edit_stories, can_delete_stories,
|
||||||
for_channel ? ChannelType::Broadcast : ChannelType::Megagroup);
|
for_channel ? ChannelType::Broadcast : ChannelType::Megagroup);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -187,6 +197,15 @@ static string get_admin_string(AdministratorRights rights) {
|
|||||||
if (rights.can_manage_calls()) {
|
if (rights.can_manage_calls()) {
|
||||||
admin_rights.emplace_back("manage_video_chats");
|
admin_rights.emplace_back("manage_video_chats");
|
||||||
}
|
}
|
||||||
|
if (rights.can_post_stories()) {
|
||||||
|
admin_rights.emplace_back("post_stories");
|
||||||
|
}
|
||||||
|
if (rights.can_edit_stories()) {
|
||||||
|
admin_rights.emplace_back("edit_stories");
|
||||||
|
}
|
||||||
|
if (rights.can_delete_stories()) {
|
||||||
|
admin_rights.emplace_back("delete_stories");
|
||||||
|
}
|
||||||
if (rights.is_anonymous()) {
|
if (rights.is_anonymous()) {
|
||||||
admin_rights.emplace_back("anonymous");
|
admin_rights.emplace_back("anonymous");
|
||||||
}
|
}
|
||||||
|
@ -1813,11 +1813,12 @@ class CliClient final : public Actor {
|
|||||||
static td_api::object_ptr<td_api::chatAdministratorRights> as_chat_administrator_rights(
|
static td_api::object_ptr<td_api::chatAdministratorRights> as_chat_administrator_rights(
|
||||||
bool can_manage_chat, bool can_change_info, bool can_post_messages, bool can_edit_messages,
|
bool can_manage_chat, bool can_change_info, bool can_post_messages, bool can_edit_messages,
|
||||||
bool can_delete_messages, bool can_invite_users, bool can_restrict_members, bool can_pin_messages,
|
bool can_delete_messages, bool can_invite_users, bool can_restrict_members, bool can_pin_messages,
|
||||||
bool can_manage_topics, bool can_promote_members, bool can_manage_video_chats, bool is_anonymous) {
|
bool can_manage_topics, bool can_promote_members, bool can_manage_video_chats, bool can_post_stories,
|
||||||
|
bool can_edit_stories, bool can_delete_stories, bool is_anonymous) {
|
||||||
return td_api::make_object<td_api::chatAdministratorRights>(
|
return td_api::make_object<td_api::chatAdministratorRights>(
|
||||||
can_manage_chat, can_change_info, can_post_messages, can_edit_messages, can_delete_messages, can_invite_users,
|
can_manage_chat, can_change_info, can_post_messages, can_edit_messages, can_delete_messages, can_invite_users,
|
||||||
can_restrict_members, can_pin_messages, can_manage_topics, can_promote_members, can_manage_video_chats,
|
can_restrict_members, can_pin_messages, can_manage_topics, can_promote_members, can_manage_video_chats,
|
||||||
is_anonymous);
|
can_post_stories, can_edit_stories, can_delete_stories, is_anonymous);
|
||||||
}
|
}
|
||||||
|
|
||||||
static td_api::object_ptr<td_api::TopChatCategory> as_top_chat_category(MutableSlice category) {
|
static td_api::object_ptr<td_api::TopChatCategory> as_top_chat_category(MutableSlice category) {
|
||||||
@ -5215,35 +5216,38 @@ class CliClient final : public Actor {
|
|||||||
} else if (status_str == "anonadmin") {
|
} else if (status_str == "anonadmin") {
|
||||||
status = td_api::make_object<td_api::chatMemberStatusAdministrator>(
|
status = td_api::make_object<td_api::chatMemberStatusAdministrator>(
|
||||||
"anon", true,
|
"anon", true,
|
||||||
as_chat_administrator_rights(true, true, true, true, true, true, true, true, true, true, true, true));
|
as_chat_administrator_rights(true, true, true, true, true, true, true, true, true, true, true, true, true,
|
||||||
|
true, true));
|
||||||
} else if (status_str == "anon") {
|
} else if (status_str == "anon") {
|
||||||
status = td_api::make_object<td_api::chatMemberStatusAdministrator>(
|
status = td_api::make_object<td_api::chatMemberStatusAdministrator>(
|
||||||
"anon", false,
|
"anon", false,
|
||||||
as_chat_administrator_rights(false, false, false, false, false, false, false, false, false, false, false,
|
as_chat_administrator_rights(false, false, false, false, false, false, false, false, false, false, false,
|
||||||
true));
|
false, false, false, true));
|
||||||
} else if (status_str == "addadmin") {
|
} else if (status_str == "addadmin") {
|
||||||
status = td_api::make_object<td_api::chatMemberStatusAdministrator>(
|
status = td_api::make_object<td_api::chatMemberStatusAdministrator>(
|
||||||
"anon", false,
|
"anon", false,
|
||||||
as_chat_administrator_rights(false, false, false, false, false, false, false, false, false, true, false,
|
as_chat_administrator_rights(false, false, false, false, false, false, false, false, false, true, false,
|
||||||
false));
|
false, false, false, false));
|
||||||
} else if (status_str == "calladmin") {
|
} else if (status_str == "calladmin") {
|
||||||
status = td_api::make_object<td_api::chatMemberStatusAdministrator>(
|
status = td_api::make_object<td_api::chatMemberStatusAdministrator>(
|
||||||
"anon", false,
|
"anon", false,
|
||||||
as_chat_administrator_rights(false, false, false, false, false, false, false, false, false, false, true,
|
as_chat_administrator_rights(false, false, false, false, false, false, false, false, false, false, true,
|
||||||
false));
|
false, false, false, false));
|
||||||
} else if (status_str == "admin") {
|
} else if (status_str == "admin") {
|
||||||
status = td_api::make_object<td_api::chatMemberStatusAdministrator>(
|
status = td_api::make_object<td_api::chatMemberStatusAdministrator>(
|
||||||
"", true,
|
"", true,
|
||||||
as_chat_administrator_rights(false, true, true, true, true, true, true, true, true, true, true, false));
|
as_chat_administrator_rights(false, true, true, true, true, true, true, true, true, true, true, true, true,
|
||||||
|
true, false));
|
||||||
} else if (status_str == "adminq") {
|
} else if (status_str == "adminq") {
|
||||||
status = td_api::make_object<td_api::chatMemberStatusAdministrator>(
|
status = td_api::make_object<td_api::chatMemberStatusAdministrator>(
|
||||||
"title", true,
|
"title", true,
|
||||||
as_chat_administrator_rights(false, true, true, true, true, true, true, true, true, true, true, false));
|
as_chat_administrator_rights(false, true, true, true, true, true, true, true, true, true, true, true, true,
|
||||||
|
true, false));
|
||||||
} else if (status_str == "minadmin") {
|
} else if (status_str == "minadmin") {
|
||||||
status = td_api::make_object<td_api::chatMemberStatusAdministrator>(
|
status = td_api::make_object<td_api::chatMemberStatusAdministrator>(
|
||||||
"", true,
|
"", true,
|
||||||
as_chat_administrator_rights(true, false, false, false, false, false, false, false, false, false, false,
|
as_chat_administrator_rights(true, false, false, false, false, false, false, false, false, false, false,
|
||||||
false));
|
false, false, false, false));
|
||||||
} else if (status_str == "unadmin") {
|
} else if (status_str == "unadmin") {
|
||||||
status = td_api::make_object<td_api::chatMemberStatusAdministrator>("", true, nullptr);
|
status = td_api::make_object<td_api::chatMemberStatusAdministrator>("", true, nullptr);
|
||||||
} else if (status_str == "rest") {
|
} else if (status_str == "rest") {
|
||||||
|
@ -160,11 +160,12 @@ static void parse_internal_link(const td::string &url, td::td_api::object_ptr<td
|
|||||||
static auto chat_administrator_rights(bool can_manage_chat, bool can_change_info, bool can_post_messages,
|
static auto chat_administrator_rights(bool can_manage_chat, bool can_change_info, bool can_post_messages,
|
||||||
bool can_edit_messages, bool can_delete_messages, bool can_invite_users,
|
bool can_edit_messages, bool can_delete_messages, bool can_invite_users,
|
||||||
bool can_restrict_members, bool can_pin_messages, bool can_manage_topics,
|
bool can_restrict_members, bool can_pin_messages, bool can_manage_topics,
|
||||||
bool can_promote_members, bool can_manage_video_chats, bool is_anonymous) {
|
bool can_promote_members, bool can_manage_video_chats, bool can_post_stories,
|
||||||
|
bool can_edit_stories, bool can_delete_stories, bool is_anonymous) {
|
||||||
return td::td_api::make_object<td::td_api::chatAdministratorRights>(
|
return td::td_api::make_object<td::td_api::chatAdministratorRights>(
|
||||||
can_manage_chat, can_change_info, can_post_messages, can_edit_messages, can_delete_messages, can_invite_users,
|
can_manage_chat, can_change_info, can_post_messages, can_edit_messages, can_delete_messages, can_invite_users,
|
||||||
can_restrict_members, can_pin_messages, can_manage_topics, can_promote_members, can_manage_video_chats,
|
can_restrict_members, can_pin_messages, can_manage_topics, can_promote_members, can_manage_video_chats,
|
||||||
is_anonymous);
|
can_post_stories, can_edit_stories, can_delete_stories, is_anonymous);
|
||||||
}
|
}
|
||||||
|
|
||||||
static auto target_chat_chosen(bool allow_users, bool allow_bots, bool allow_groups, bool allow_channels) {
|
static auto target_chat_chosen(bool allow_users, bool allow_bots, bool allow_groups, bool allow_channels) {
|
||||||
@ -974,25 +975,26 @@ TEST(Link, parse_internal_link_part3) {
|
|||||||
parse_internal_link("tg:resolve?domain=username&startgroup=1&admin=delete_messages+anonymous",
|
parse_internal_link("tg:resolve?domain=username&startgroup=1&admin=delete_messages+anonymous",
|
||||||
bot_start_in_group("username", "1",
|
bot_start_in_group("username", "1",
|
||||||
chat_administrator_rights(true, false, false, false, true, false, false, false,
|
chat_administrator_rights(true, false, false, false, true, false, false, false,
|
||||||
false, false, false, true)));
|
false, false, false, false, false, false, true)));
|
||||||
parse_internal_link(
|
parse_internal_link(
|
||||||
"tg:resolve?domain=username&startgroup&admin=manage_chat+change_info+post_messages+edit_messages+delete_messages+"
|
"tg:resolve?domain=username&startgroup&admin=manage_chat+change_info+post_messages+edit_messages+delete_messages+"
|
||||||
"invite_users+restrict_members+pin_messages+manage_topics+promote_members+manage_video_chats+anonymous",
|
"invite_users+restrict_members+pin_messages+manage_topics+promote_members+manage_video_chats+post_stories+edit_"
|
||||||
bot_start_in_group(
|
"stories+delete_stories+anonymous",
|
||||||
"username", "",
|
bot_start_in_group("username", "",
|
||||||
chat_administrator_rights(true, true, false, false, true, true, true, true, true, true, true, true)));
|
chat_administrator_rights(true, true, false, false, true, true, true, true, true, true, true,
|
||||||
|
false, false, false, true)));
|
||||||
|
|
||||||
parse_internal_link("tg:resolve?domain=username&startchannel", public_chat("username"));
|
parse_internal_link("tg:resolve?domain=username&startchannel", public_chat("username"));
|
||||||
parse_internal_link("tg:resolve?domain=username&startchannel&admin=", public_chat("username"));
|
parse_internal_link("tg:resolve?domain=username&startchannel&admin=", public_chat("username"));
|
||||||
parse_internal_link(
|
parse_internal_link(
|
||||||
"tg:resolve?domain=username&startchannel&admin=post_messages",
|
"tg:resolve?domain=username&startchannel&admin=post_messages",
|
||||||
bot_add_to_channel("username", chat_administrator_rights(true, false, true, false, false, false, true, false,
|
bot_add_to_channel("username", chat_administrator_rights(true, false, true, false, false, false, true, false,
|
||||||
false, false, false, false)));
|
false, false, false, false, false, false, false)));
|
||||||
parse_internal_link(
|
parse_internal_link(
|
||||||
"tg:resolve?domain=username&startchannel&admin=manage_chat+change_info+post_messages+edit_messages+delete_"
|
"tg:resolve?domain=username&startchannel&admin=manage_chat+change_info+post_messages+edit_messages+delete_"
|
||||||
"messages+invite_users+restrict_members+pin_messages+manage_topics+promote_members+manage_video_chats+anonymous",
|
"messages+invite_users+restrict_members+pin_messages+manage_topics+promote_members+manage_video_chats+anonymous",
|
||||||
bot_add_to_channel("username", chat_administrator_rights(true, true, true, true, true, true, true, false, false,
|
bot_add_to_channel("username", chat_administrator_rights(true, true, true, true, true, true, true, false, false,
|
||||||
true, true, false)));
|
true, true, false, false, false, false)));
|
||||||
|
|
||||||
parse_internal_link("t.me/username/0/a//s/as?startgroup=", bot_start_in_group("username", "", nullptr));
|
parse_internal_link("t.me/username/0/a//s/as?startgroup=", bot_start_in_group("username", "", nullptr));
|
||||||
parse_internal_link("t.me/username/aasdas/2?test=1&startgroup=#12312", bot_start_in_group("username", "", nullptr));
|
parse_internal_link("t.me/username/aasdas/2?test=1&startgroup=#12312", bot_start_in_group("username", "", nullptr));
|
||||||
@ -1010,27 +1012,29 @@ TEST(Link, parse_internal_link_part3) {
|
|||||||
parse_internal_link("t.me/username?startgroup=1&admin=delete_messages+anonymous",
|
parse_internal_link("t.me/username?startgroup=1&admin=delete_messages+anonymous",
|
||||||
bot_start_in_group("username", "1",
|
bot_start_in_group("username", "1",
|
||||||
chat_administrator_rights(true, false, false, false, true, false, false, false,
|
chat_administrator_rights(true, false, false, false, true, false, false, false,
|
||||||
false, false, false, true)));
|
false, false, false, false, false, false, true)));
|
||||||
parse_internal_link(
|
parse_internal_link(
|
||||||
"t.me/"
|
"t.me/"
|
||||||
"username?startgroup&admin=manage_chat+change_info+post_messages+edit_messages+delete_messages+invite_users+"
|
"username?startgroup&admin=manage_chat+change_info+post_messages+edit_messages+delete_messages+invite_users+"
|
||||||
"restrict_members+pin_messages+manage_topics+promote_members+manage_video_chats+anonymous",
|
"restrict_members+pin_messages+manage_topics+promote_members+manage_video_chats+post_stories+edit_stories+delete_"
|
||||||
bot_start_in_group(
|
"stories+anonymous",
|
||||||
"username", "",
|
bot_start_in_group("username", "",
|
||||||
chat_administrator_rights(true, true, false, false, true, true, true, true, true, true, true, true)));
|
chat_administrator_rights(true, true, false, false, true, true, true, true, true, true, true,
|
||||||
|
false, false, false, true)));
|
||||||
|
|
||||||
parse_internal_link("t.me/username?startchannel", public_chat("username"));
|
parse_internal_link("t.me/username?startchannel", public_chat("username"));
|
||||||
parse_internal_link("t.me/username?startchannel&admin=", public_chat("username"));
|
parse_internal_link("t.me/username?startchannel&admin=", public_chat("username"));
|
||||||
parse_internal_link(
|
parse_internal_link(
|
||||||
"t.me/username?startchannel&admin=post_messages",
|
"t.me/username?startchannel&admin=post_messages",
|
||||||
bot_add_to_channel("username", chat_administrator_rights(true, false, true, false, false, false, true, false,
|
bot_add_to_channel("username", chat_administrator_rights(true, false, true, false, false, false, true, false,
|
||||||
false, false, false, false)));
|
false, false, false, false, false, false, false)));
|
||||||
parse_internal_link(
|
parse_internal_link(
|
||||||
"t.me/"
|
"t.me/"
|
||||||
"username?startchannel&admin=manage_chat+change_info+post_messages+edit_messages+delete_messages+invite_users+"
|
"username?startchannel&admin=manage_chat+change_info+post_messages+edit_messages+delete_messages+invite_users+"
|
||||||
"restrict_members+pin_messages+manage_topics+promote_members+manage_video_chats+anonymous",
|
"restrict_members+pin_messages+manage_topics+promote_members+manage_video_chats+post_stories+edit_stories+delete_"
|
||||||
|
"stories+anonymous",
|
||||||
bot_add_to_channel("username", chat_administrator_rights(true, true, true, true, true, true, true, false, false,
|
bot_add_to_channel("username", chat_administrator_rights(true, true, true, true, true, true, true, false, false,
|
||||||
true, true, false)));
|
true, true, true, true, true, false)));
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST(Link, parse_internal_link_part4) {
|
TEST(Link, parse_internal_link_part4) {
|
||||||
|
Loading…
Reference in New Issue
Block a user