mirror of
https://github.com/Mayuri-Chan/pyrofork.git
synced 2025-12-29 12:04:51 +00:00
Compare commits
44 commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6bbff46417 | ||
|
|
2c32c152cb | ||
|
|
97db9130bb | ||
|
|
47a3b6179d | ||
|
|
2f2d515575 | ||
|
|
e9c40679d2 | ||
|
|
b43e857ed2 | ||
|
|
72b043b743 | ||
|
|
ac8e8fef4d | ||
|
|
0876ac31bd | ||
|
|
4f4988e808 | ||
|
|
94c474a646 | ||
|
|
66753e44f2 | ||
|
|
d35abe89c4 | ||
|
|
77f50c6a82 | ||
|
|
c15a59e998 | ||
|
|
945dcfca56 | ||
|
|
12cf466b23 | ||
|
|
8c6bad6aa4 | ||
|
|
dddb0d75e7 | ||
|
|
f0cc3afe5d | ||
|
|
7105b131dc | ||
|
|
4afd74d26e | ||
|
|
73027fecf7 | ||
|
|
7db5e1423f | ||
|
|
802c394f91 | ||
|
|
4570b3b5a9 | ||
|
|
fa9781d62c | ||
|
|
9a772a8c8a | ||
|
|
cb38d6a02b | ||
|
|
cf6141feb4 | ||
|
|
8acc457458 | ||
|
|
413556a3f2 | ||
|
|
4a109b3dc2 | ||
|
|
46e755f297 | ||
|
|
c8b22bb5e7 | ||
|
|
9b670a78b3 | ||
|
|
621c690e55 | ||
|
|
07bdefb017 | ||
|
|
9d795911b4 | ||
|
|
cb19b742ad | ||
|
|
1ba1a051c4 | ||
|
|
6151813555 | ||
|
|
cc4eb21b84 |
67 changed files with 1451 additions and 250 deletions
21
.github/workflows/build-docs.yml
vendored
21
.github/workflows/build-docs.yml
vendored
|
|
@ -14,8 +14,25 @@ jobs:
|
|||
runs-on: ubuntu-22.04
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Configure
|
||||
run: bash build-docs.sh configure
|
||||
|
||||
- name: Cleanup
|
||||
run: bash build-docs.sh cleanup
|
||||
|
||||
- name: Create virtual environment
|
||||
run: bash build-docs.sh virtualenv
|
||||
|
||||
- name: Build
|
||||
run: bash build-docs.sh
|
||||
run: bash build-docs.sh build
|
||||
|
||||
- name: Clone gh-pages repository
|
||||
run: bash build-docs.sh clone
|
||||
env:
|
||||
DOCS_KEY: ${{ secrets.DOCS_KEY }}
|
||||
|
||||
- name: Push changes
|
||||
run: bash build-docs.sh push
|
||||
|
|
|
|||
2
.github/workflows/python.yml
vendored
2
.github/workflows/python.yml
vendored
|
|
@ -9,7 +9,7 @@ jobs:
|
|||
strategy:
|
||||
matrix:
|
||||
os: [ubuntu-latest, macos-latest]
|
||||
python-version: ["3.9", "3.10", "3.11", "3.12", "3.13"]
|
||||
python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"]
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@
|
|||
Homepage
|
||||
</a>
|
||||
•
|
||||
<a href="https://pyrofork.wulan17.top">
|
||||
<a href="https://pyrofork.wulan17.dev">
|
||||
Documentation
|
||||
</a>
|
||||
•
|
||||
|
|
@ -44,7 +44,7 @@ async def hello(client, message):
|
|||
app.run()
|
||||
```
|
||||
|
||||
**Pyrofork** is a modern, elegant and asynchronous [MTProto API](https://pyrofork.wulan17.top/main/topics/mtproto-vs-botapi)
|
||||
**Pyrofork** is a modern, elegant and asynchronous [MTProto API](https://pyrofork.wulan17.dev/main/topics/mtproto-vs-botapi)
|
||||
framework. It enables you to easily interact with the main Telegram API through a user account (custom client) or a bot
|
||||
identity (bot API alternative) using Python.
|
||||
|
||||
|
|
@ -72,6 +72,6 @@ pip3 install pyrofork
|
|||
|
||||
### Resources
|
||||
|
||||
- Check out the docs at https://pyrofork.wulan17.top to learn more about Pyrofork, get started right
|
||||
- Check out the docs at https://pyrofork.wulan17.dev to learn more about Pyrofork, get started right
|
||||
away and discover more in-depth material for building your client applications.
|
||||
- Join the official group at https://t.me/MayuriChan_Chat and stay tuned for news, updates and announcements.
|
||||
|
|
|
|||
103
build-docs.sh
103
build-docs.sh
|
|
@ -1,42 +1,87 @@
|
|||
#!/bin/bash
|
||||
export DOCS_KEY
|
||||
VENV="$(pwd)"/venv
|
||||
export VENV
|
||||
|
||||
if [[ "$(echo "$GITHUB_REF" | cut -d '/' -f "1 2")" == "refs/tags" ]]; then
|
||||
branch="main"
|
||||
elif [[ "$GITHUB_REF" == "refs/heads/staging" ]]; then
|
||||
branch="staging"
|
||||
else
|
||||
# Check if config.sh exists
|
||||
if [ -f config.sh ]; then
|
||||
source config.sh
|
||||
fi
|
||||
|
||||
function parse_parameters() {
|
||||
while (($#)); do
|
||||
case $1 in
|
||||
all | configure | cleanup | virtualenv | build | clone | push ) action=$1 ;;
|
||||
*) exit 33 ;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
}
|
||||
|
||||
function do_configure() {
|
||||
echo "#!/bin/bash" > config.sh
|
||||
echo "export VENV=\"$(pwd)/venv\"" >> config.sh
|
||||
|
||||
if [[ "$(echo "$GITHUB_REF" | cut -d '/' -f "1 2")" == "refs/tags" ]]; then
|
||||
echo "export BRANCH=\"main\"" >> config.sh
|
||||
elif [[ "$GITHUB_REF" == "refs/heads/staging" ]]; then
|
||||
echo "export BRANCH=\"staging\"" >> config.sh
|
||||
else
|
||||
b="$(echo "$GITHUB_REF" | cut -d '/' -f '3 4')"
|
||||
if [[ $(echo "$b" | cut -d '/' -f 1 ) == "dev" ]]; then
|
||||
b="$(echo "$b" | cut -d '/' -f 2)"
|
||||
if [[ "$b" =~ ^[0-9]\.[0-9]\.x ]]; then
|
||||
branch="$b"
|
||||
echo "export BRANCH=\"$b\"" >> config.sh
|
||||
else
|
||||
exit 0
|
||||
fi
|
||||
else
|
||||
exit 0
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
chmod +x config.sh
|
||||
}
|
||||
|
||||
make clean
|
||||
make clean-docs
|
||||
make venv
|
||||
make api
|
||||
"$VENV"/bin/pip install -e '.[docs]'
|
||||
cd compiler/docs || exit 1 && "$VENV"/bin/python compiler.py
|
||||
cd ../.. || exit 1
|
||||
"$VENV"/bin/sphinx-build -b html "docs/source" "docs/build/html" -j auto
|
||||
git clone https://wulan17:"$DOCS_KEY"@github.com/Mayuri-Chan/pyrofork-docs.git
|
||||
cd pyrofork-docs || exit 1
|
||||
mkdir -p "$branch"
|
||||
cd "$branch" || exit 1
|
||||
rm -rf _includes api genindex.html intro py-modindex.html sitemap.xml support.html topics _static faq index.html objects.inv searchindex.js start telegram
|
||||
cp -r ../../docs/build/html/* .
|
||||
git config --local user.name "Mayuri-Chan"
|
||||
git config --local user.email "mayuri@mayuri.my.id"
|
||||
git add --all
|
||||
git commit -a -m "docs: $branch: Update docs $(date '+%Y-%m-%d | %H:%m:%S %p %Z')" --signoff
|
||||
git push -u origin --all
|
||||
function do_cleanup() {
|
||||
make clean
|
||||
make clean-docs
|
||||
}
|
||||
|
||||
function do_virtualenv() {
|
||||
make venv
|
||||
make api
|
||||
"$VENV"/bin/pip install -e '.[docs]'
|
||||
}
|
||||
|
||||
function do_build() {
|
||||
cd compiler/docs || exit 1 && "$VENV"/bin/python compiler.py
|
||||
cd ../.. || exit 1
|
||||
"$VENV"/bin/sphinx-build -b html "docs/source" "docs/build/html" -j auto
|
||||
}
|
||||
|
||||
function do_clone() {
|
||||
git clone https://wulan17:"$DOCS_KEY"@github.com/Mayuri-Chan/pyrofork-docs.git
|
||||
}
|
||||
|
||||
function do_push() {
|
||||
cd pyrofork-docs || exit 1
|
||||
mkdir -p "$BRANCH"
|
||||
cd "$BRANCH" || exit 1
|
||||
rm -rf _includes api genindex.html intro py-modindex.html sitemap.xml support.html topics _static faq index.html objects.inv searchindex.js start telegram
|
||||
cp -r ../../docs/build/html/* .
|
||||
git config --local user.name "Mayuri-Chan"
|
||||
git config --local user.email "mayuri@mayuri.my.id"
|
||||
git add --all
|
||||
git commit -a -m "docs: $BRANCH: Update docs $(date '+%Y-%m-%d | %H:%m:%S %p %Z')" --signoff
|
||||
git push -u origin --all
|
||||
}
|
||||
|
||||
function do_all() {
|
||||
do_configure
|
||||
source config.sh
|
||||
do_cleanup
|
||||
do_virtualenv
|
||||
do_build
|
||||
do_clone
|
||||
do_push
|
||||
}
|
||||
|
||||
parse_parameters "$@"
|
||||
do_"${action:=all}"
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@ inputUserSelf#f7c1b13f = InputUser;
|
|||
inputUser#f21158c6 user_id:long access_hash:long = InputUser;
|
||||
inputUserFromMessage#1da448e2 peer:InputPeer msg_id:int user_id:long = InputUser;
|
||||
|
||||
inputPhoneContact#f392b7f4 client_id:long phone:string first_name:string last_name:string = InputContact;
|
||||
inputPhoneContact#6a1dc4be flags:# client_id:long phone:string first_name:string last_name:string note:flags.0?TextWithEntities = InputContact;
|
||||
|
||||
inputFile#f52ff27f id:long parts:int name:string md5_checksum:string = InputFile;
|
||||
inputFileBig#fa4f0bb5 id:long parts:int name:string = InputFile;
|
||||
|
|
@ -55,6 +55,7 @@ inputMediaDice#e66fbf7b emoticon:string = InputMedia;
|
|||
inputMediaStory#89fdd778 peer:InputPeer id:int = InputMedia;
|
||||
inputMediaWebPage#c21b8849 flags:# force_large_media:flags.0?true force_small_media:flags.1?true optional:flags.2?true url:string = InputMedia;
|
||||
inputMediaPaidMedia#c4103386 flags:# stars_amount:long extended_media:Vector<InputMedia> payload:flags.0?string = InputMedia;
|
||||
inputMediaTodo#9fc55fde todo:TodoList = InputMedia;
|
||||
|
||||
inputChatPhotoEmpty#1ca48f57 = InputChatPhoto;
|
||||
inputChatUploadedPhoto#bdcdaec0 flags:# file:flags.0?InputFile video:flags.1?InputFile video_start_ts:flags.2?double video_emoji_markup:flags.3?VideoSize = InputChatPhoto;
|
||||
|
|
@ -93,7 +94,7 @@ storage.fileMp4#b3cea0e4 = storage.FileType;
|
|||
storage.fileWebp#1081464c = storage.FileType;
|
||||
|
||||
userEmpty#d3bc4b7a id:long = User;
|
||||
user#20b1422 flags:# self:flags.10?true contact:flags.11?true mutual_contact:flags.12?true deleted:flags.13?true bot:flags.14?true bot_chat_history:flags.15?true bot_nochats:flags.16?true verified:flags.17?true restricted:flags.18?true min:flags.20?true bot_inline_geo:flags.21?true support:flags.23?true scam:flags.24?true apply_min_photo:flags.25?true fake:flags.26?true bot_attach_menu:flags.27?true premium:flags.28?true attach_menu_enabled:flags.29?true flags2:# bot_can_edit:flags2.1?true close_friend:flags2.2?true stories_hidden:flags2.3?true stories_unavailable:flags2.4?true contact_require_premium:flags2.10?true bot_business:flags2.11?true bot_has_main_app:flags2.13?true id:long access_hash:flags.0?long first_name:flags.1?string last_name:flags.2?string username:flags.3?string phone:flags.4?string photo:flags.5?UserProfilePhoto status:flags.6?UserStatus bot_info_version:flags.14?int restriction_reason:flags.18?Vector<RestrictionReason> bot_inline_placeholder:flags.19?string lang_code:flags.22?string emoji_status:flags.30?EmojiStatus usernames:flags2.0?Vector<Username> stories_max_id:flags2.5?int color:flags2.8?PeerColor profile_color:flags2.9?PeerColor bot_active_users:flags2.12?int bot_verification_icon:flags2.14?long send_paid_messages_stars:flags2.15?long = User;
|
||||
user#31774388 flags:# self:flags.10?true contact:flags.11?true mutual_contact:flags.12?true deleted:flags.13?true bot:flags.14?true bot_chat_history:flags.15?true bot_nochats:flags.16?true verified:flags.17?true restricted:flags.18?true min:flags.20?true bot_inline_geo:flags.21?true support:flags.23?true scam:flags.24?true apply_min_photo:flags.25?true fake:flags.26?true bot_attach_menu:flags.27?true premium:flags.28?true attach_menu_enabled:flags.29?true flags2:# bot_can_edit:flags2.1?true close_friend:flags2.2?true stories_hidden:flags2.3?true stories_unavailable:flags2.4?true contact_require_premium:flags2.10?true bot_business:flags2.11?true bot_has_main_app:flags2.13?true bot_forum_view:flags2.16?true id:long access_hash:flags.0?long first_name:flags.1?string last_name:flags.2?string username:flags.3?string phone:flags.4?string photo:flags.5?UserProfilePhoto status:flags.6?UserStatus bot_info_version:flags.14?int restriction_reason:flags.18?Vector<RestrictionReason> bot_inline_placeholder:flags.19?string lang_code:flags.22?string emoji_status:flags.30?EmojiStatus usernames:flags2.0?Vector<Username> stories_max_id:flags2.5?RecentStory color:flags2.8?PeerColor profile_color:flags2.9?PeerColor bot_active_users:flags2.12?int bot_verification_icon:flags2.14?long send_paid_messages_stars:flags2.15?long = User;
|
||||
|
||||
userProfilePhotoEmpty#4f11bae1 = UserProfilePhoto;
|
||||
userProfilePhoto#82d1f706 flags:# has_video:flags.0?true personal:flags.2?true photo_id:long stripped_thumb:flags.1?bytes dc_id:int = UserProfilePhoto;
|
||||
|
|
@ -108,11 +109,11 @@ userStatusLastMonth#65899777 flags:# by_me:flags.0?true = UserStatus;
|
|||
chatEmpty#29562865 id:long = Chat;
|
||||
chat#41cbf256 flags:# creator:flags.0?true left:flags.2?true deactivated:flags.5?true call_active:flags.23?true call_not_empty:flags.24?true noforwards:flags.25?true id:long title:string photo:ChatPhoto participants_count:int date:int version:int migrated_to:flags.6?InputChannel admin_rights:flags.14?ChatAdminRights default_banned_rights:flags.18?ChatBannedRights = Chat;
|
||||
chatForbidden#6592a1a7 id:long title:string = Chat;
|
||||
channel#fe685355 flags:# creator:flags.0?true left:flags.2?true broadcast:flags.5?true verified:flags.7?true megagroup:flags.8?true restricted:flags.9?true signatures:flags.11?true min:flags.12?true scam:flags.19?true has_link:flags.20?true has_geo:flags.21?true slowmode_enabled:flags.22?true call_active:flags.23?true call_not_empty:flags.24?true fake:flags.25?true gigagroup:flags.26?true noforwards:flags.27?true join_to_send:flags.28?true join_request:flags.29?true forum:flags.30?true flags2:# stories_hidden:flags2.1?true stories_hidden_min:flags2.2?true stories_unavailable:flags2.3?true signature_profiles:flags2.12?true autotranslation:flags2.15?true broadcast_messages_allowed:flags2.16?true monoforum:flags2.17?true forum_tabs:flags2.19?true id:long access_hash:flags.13?long title:string username:flags.6?string photo:ChatPhoto date:int restriction_reason:flags.9?Vector<RestrictionReason> admin_rights:flags.14?ChatAdminRights banned_rights:flags.15?ChatBannedRights default_banned_rights:flags.18?ChatBannedRights participants_count:flags.17?int usernames:flags2.0?Vector<Username> stories_max_id:flags2.4?int color:flags2.7?PeerColor profile_color:flags2.8?PeerColor emoji_status:flags2.9?EmojiStatus level:flags2.10?int subscription_until_date:flags2.11?int bot_verification_icon:flags2.13?long send_paid_messages_stars:flags2.14?long linked_monoforum_id:flags2.18?long = Chat;
|
||||
channel#1c32b11c flags:# creator:flags.0?true left:flags.2?true broadcast:flags.5?true verified:flags.7?true megagroup:flags.8?true restricted:flags.9?true signatures:flags.11?true min:flags.12?true scam:flags.19?true has_link:flags.20?true has_geo:flags.21?true slowmode_enabled:flags.22?true call_active:flags.23?true call_not_empty:flags.24?true fake:flags.25?true gigagroup:flags.26?true noforwards:flags.27?true join_to_send:flags.28?true join_request:flags.29?true forum:flags.30?true flags2:# stories_hidden:flags2.1?true stories_hidden_min:flags2.2?true stories_unavailable:flags2.3?true signature_profiles:flags2.12?true autotranslation:flags2.15?true broadcast_messages_allowed:flags2.16?true monoforum:flags2.17?true forum_tabs:flags2.19?true id:long access_hash:flags.13?long title:string username:flags.6?string photo:ChatPhoto date:int restriction_reason:flags.9?Vector<RestrictionReason> admin_rights:flags.14?ChatAdminRights banned_rights:flags.15?ChatBannedRights default_banned_rights:flags.18?ChatBannedRights participants_count:flags.17?int usernames:flags2.0?Vector<Username> stories_max_id:flags2.4?RecentStory color:flags2.7?PeerColor profile_color:flags2.8?PeerColor emoji_status:flags2.9?EmojiStatus level:flags2.10?int subscription_until_date:flags2.11?int bot_verification_icon:flags2.13?long send_paid_messages_stars:flags2.14?long linked_monoforum_id:flags2.18?long = Chat;
|
||||
channelForbidden#17d493d5 flags:# broadcast:flags.5?true megagroup:flags.8?true id:long access_hash:long title:string until_date:flags.16?int = Chat;
|
||||
|
||||
chatFull#2633421b flags:# can_set_username:flags.7?true has_scheduled:flags.8?true translations_disabled:flags.19?true id:long about:string participants:ChatParticipants chat_photo:flags.2?Photo notify_settings:PeerNotifySettings exported_invite:flags.13?ExportedChatInvite bot_info:flags.3?Vector<BotInfo> pinned_msg_id:flags.6?int folder_id:flags.11?int call:flags.12?InputGroupCall ttl_period:flags.14?int groupcall_default_join_as:flags.15?Peer theme_emoticon:flags.16?string requests_pending:flags.17?int recent_requesters:flags.17?Vector<long> available_reactions:flags.18?ChatReactions reactions_limit:flags.20?int = ChatFull;
|
||||
channelFull#52d6806b flags:# can_view_participants:flags.3?true can_set_username:flags.6?true can_set_stickers:flags.7?true hidden_prehistory:flags.10?true can_set_location:flags.16?true has_scheduled:flags.19?true can_view_stats:flags.20?true blocked:flags.22?true flags2:# can_delete_channel:flags2.0?true antispam:flags2.1?true participants_hidden:flags2.2?true translations_disabled:flags2.3?true stories_pinned_available:flags2.5?true view_forum_as_messages:flags2.6?true restricted_sponsored:flags2.11?true can_view_revenue:flags2.12?true paid_media_allowed:flags2.14?true can_view_stars_revenue:flags2.15?true paid_reactions_available:flags2.16?true stargifts_available:flags2.19?true paid_messages_available:flags2.20?true id:long about:string participants_count:flags.0?int admins_count:flags.1?int kicked_count:flags.2?int banned_count:flags.2?int online_count:flags.13?int read_inbox_max_id:int read_outbox_max_id:int unread_count:int chat_photo:Photo notify_settings:PeerNotifySettings exported_invite:flags.23?ExportedChatInvite bot_info:Vector<BotInfo> migrated_from_chat_id:flags.4?long migrated_from_max_id:flags.4?int pinned_msg_id:flags.5?int stickerset:flags.8?StickerSet available_min_id:flags.9?int folder_id:flags.11?int linked_chat_id:flags.14?long location:flags.15?ChannelLocation slowmode_seconds:flags.17?int slowmode_next_send_date:flags.18?int stats_dc:flags.12?int pts:int call:flags.21?InputGroupCall ttl_period:flags.24?int pending_suggestions:flags.25?Vector<string> groupcall_default_join_as:flags.26?Peer theme_emoticon:flags.27?string requests_pending:flags.28?int recent_requesters:flags.28?Vector<long> default_send_as:flags.29?Peer available_reactions:flags.30?ChatReactions reactions_limit:flags2.13?int stories:flags2.4?PeerStories wallpaper:flags2.7?WallPaper boosts_applied:flags2.8?int boosts_unrestrict:flags2.9?int emojiset:flags2.10?StickerSet bot_verification:flags2.17?BotVerification stargifts_count:flags2.18?int = ChatFull;
|
||||
channelFull#e4e0b29d flags:# can_view_participants:flags.3?true can_set_username:flags.6?true can_set_stickers:flags.7?true hidden_prehistory:flags.10?true can_set_location:flags.16?true has_scheduled:flags.19?true can_view_stats:flags.20?true blocked:flags.22?true flags2:# can_delete_channel:flags2.0?true antispam:flags2.1?true participants_hidden:flags2.2?true translations_disabled:flags2.3?true stories_pinned_available:flags2.5?true view_forum_as_messages:flags2.6?true restricted_sponsored:flags2.11?true can_view_revenue:flags2.12?true paid_media_allowed:flags2.14?true can_view_stars_revenue:flags2.15?true paid_reactions_available:flags2.16?true stargifts_available:flags2.19?true paid_messages_available:flags2.20?true id:long about:string participants_count:flags.0?int admins_count:flags.1?int kicked_count:flags.2?int banned_count:flags.2?int online_count:flags.13?int read_inbox_max_id:int read_outbox_max_id:int unread_count:int chat_photo:Photo notify_settings:PeerNotifySettings exported_invite:flags.23?ExportedChatInvite bot_info:Vector<BotInfo> migrated_from_chat_id:flags.4?long migrated_from_max_id:flags.4?int pinned_msg_id:flags.5?int stickerset:flags.8?StickerSet available_min_id:flags.9?int folder_id:flags.11?int linked_chat_id:flags.14?long location:flags.15?ChannelLocation slowmode_seconds:flags.17?int slowmode_next_send_date:flags.18?int stats_dc:flags.12?int pts:int call:flags.21?InputGroupCall ttl_period:flags.24?int pending_suggestions:flags.25?Vector<string> groupcall_default_join_as:flags.26?Peer theme_emoticon:flags.27?string requests_pending:flags.28?int recent_requesters:flags.28?Vector<long> default_send_as:flags.29?Peer available_reactions:flags.30?ChatReactions reactions_limit:flags2.13?int stories:flags2.4?PeerStories wallpaper:flags2.7?WallPaper boosts_applied:flags2.8?int boosts_unrestrict:flags2.9?int emojiset:flags2.10?StickerSet bot_verification:flags2.17?BotVerification stargifts_count:flags2.18?int send_paid_messages_stars:flags2.21?long main_tab:flags2.22?ProfileTab = ChatFull;
|
||||
|
||||
chatParticipant#c02d4007 user_id:long inviter_id:long date:int = ChatParticipant;
|
||||
chatParticipantCreator#e46bcee4 user_id:long = ChatParticipant;
|
||||
|
|
@ -125,8 +126,8 @@ chatPhotoEmpty#37c1011c = ChatPhoto;
|
|||
chatPhoto#1c6e1c11 flags:# has_video:flags.0?true photo_id:long stripped_thumb:flags.1?bytes dc_id:int = ChatPhoto;
|
||||
|
||||
messageEmpty#90a6ca84 flags:# id:int peer_id:flags.0?Peer = Message;
|
||||
message#eabcdd4d flags:# out:flags.1?true mentioned:flags.4?true media_unread:flags.5?true silent:flags.13?true post:flags.14?true from_scheduled:flags.18?true legacy:flags.19?true edit_hide:flags.21?true pinned:flags.24?true noforwards:flags.26?true invert_media:flags.27?true flags2:# offline:flags2.1?true video_processing_pending:flags2.4?true id:int from_id:flags.8?Peer from_boosts_applied:flags.29?int peer_id:Peer saved_peer_id:flags.28?Peer fwd_from:flags.2?MessageFwdHeader via_bot_id:flags.11?long via_business_bot_id:flags2.0?long reply_to:flags.3?MessageReplyHeader date:int message:string media:flags.9?MessageMedia reply_markup:flags.6?ReplyMarkup entities:flags.7?Vector<MessageEntity> views:flags.10?int forwards:flags.10?int replies:flags.23?MessageReplies edit_date:flags.15?int post_author:flags.16?string grouped_id:flags.17?long reactions:flags.20?MessageReactions restriction_reason:flags.22?Vector<RestrictionReason> ttl_period:flags.25?int quick_reply_shortcut_id:flags.30?int effect:flags2.2?long factcheck:flags2.3?FactCheck report_delivery_until_date:flags2.5?int paid_message_stars:flags2.6?long = Message;
|
||||
messageService#d3d28540 flags:# out:flags.1?true mentioned:flags.4?true media_unread:flags.5?true reactions_are_possible:flags.9?true silent:flags.13?true post:flags.14?true legacy:flags.19?true id:int from_id:flags.8?Peer peer_id:Peer reply_to:flags.3?MessageReplyHeader date:int action:MessageAction reactions:flags.20?MessageReactions ttl_period:flags.25?int = Message;
|
||||
message#b92f76cf flags:# out:flags.1?true mentioned:flags.4?true media_unread:flags.5?true silent:flags.13?true post:flags.14?true from_scheduled:flags.18?true legacy:flags.19?true edit_hide:flags.21?true pinned:flags.24?true noforwards:flags.26?true invert_media:flags.27?true flags2:# offline:flags2.1?true video_processing_pending:flags2.4?true paid_suggested_post_stars:flags2.8?true paid_suggested_post_ton:flags2.9?true id:int from_id:flags.8?Peer from_boosts_applied:flags.29?int peer_id:Peer saved_peer_id:flags.28?Peer fwd_from:flags.2?MessageFwdHeader via_bot_id:flags.11?long via_business_bot_id:flags2.0?long reply_to:flags.3?MessageReplyHeader date:int message:string media:flags.9?MessageMedia reply_markup:flags.6?ReplyMarkup entities:flags.7?Vector<MessageEntity> views:flags.10?int forwards:flags.10?int replies:flags.23?MessageReplies edit_date:flags.15?int post_author:flags.16?string grouped_id:flags.17?long reactions:flags.20?MessageReactions restriction_reason:flags.22?Vector<RestrictionReason> ttl_period:flags.25?int quick_reply_shortcut_id:flags.30?int effect:flags2.2?long factcheck:flags2.3?FactCheck report_delivery_until_date:flags2.5?int paid_message_stars:flags2.6?long suggested_post:flags2.7?SuggestedPost schedule_repeat_period:flags2.10?int = Message;
|
||||
messageService#7a800e0a flags:# out:flags.1?true mentioned:flags.4?true media_unread:flags.5?true reactions_are_possible:flags.9?true silent:flags.13?true post:flags.14?true legacy:flags.19?true id:int from_id:flags.8?Peer peer_id:Peer saved_peer_id:flags.28?Peer reply_to:flags.3?MessageReplyHeader date:int action:MessageAction reactions:flags.20?MessageReactions ttl_period:flags.25?int = Message;
|
||||
|
||||
messageMediaEmpty#3ded6320 = MessageMedia;
|
||||
messageMediaPhoto#695150d7 flags:# spoiler:flags.3?true photo:flags.0?Photo ttl_seconds:flags.2?int = MessageMedia;
|
||||
|
|
@ -145,6 +146,8 @@ messageMediaStory#68cb6283 flags:# via_mention:flags.1?true peer:Peer id:int sto
|
|||
messageMediaGiveaway#aa073beb flags:# only_new_subscribers:flags.0?true winners_are_visible:flags.2?true channels:Vector<long> countries_iso2:flags.1?Vector<string> prize_description:flags.3?string quantity:int months:flags.4?int stars:flags.5?long until_date:int = MessageMedia;
|
||||
messageMediaGiveawayResults#ceaa3ea1 flags:# only_new_subscribers:flags.0?true refunded:flags.2?true channel_id:long additional_peers_count:flags.3?int launch_msg_id:int winners_count:int unclaimed_count:int winners:Vector<long> months:flags.4?int stars:flags.5?long prize_description:flags.1?string until_date:int = MessageMedia;
|
||||
messageMediaPaidMedia#a8852491 stars_amount:long extended_media:Vector<MessageExtendedMedia> = MessageMedia;
|
||||
messageMediaToDo#8a53b014 flags:# todo:TodoList completions:flags.0?Vector<TodoCompletion> = MessageMedia;
|
||||
messageMediaVideoStream#ca5cab89 flags:# rtmp_stream:flags.0?true call:InputGroupCall = MessageMedia;
|
||||
|
||||
messageActionEmpty#b6aef7b0 = MessageAction;
|
||||
messageActionChatCreate#bd47cbad title:string users:Vector<long> = MessageAction;
|
||||
|
|
@ -174,17 +177,17 @@ messageActionGroupCall#7a0d7f42 flags:# call:InputGroupCall duration:flags.0?int
|
|||
messageActionInviteToGroupCall#502f92f7 call:InputGroupCall users:Vector<long> = MessageAction;
|
||||
messageActionSetMessagesTTL#3c134d7b flags:# period:int auto_setting_from:flags.0?long = MessageAction;
|
||||
messageActionGroupCallScheduled#b3a07661 call:InputGroupCall schedule_date:int = MessageAction;
|
||||
messageActionSetChatTheme#aa786345 emoticon:string = MessageAction;
|
||||
messageActionSetChatTheme#b91bbd3a theme:ChatTheme = MessageAction;
|
||||
messageActionChatJoinedByRequest#ebbca3cb = MessageAction;
|
||||
messageActionWebViewDataSentMe#47dd8079 text:string data:string = MessageAction;
|
||||
messageActionWebViewDataSent#b4c38cb5 text:string = MessageAction;
|
||||
messageActionGiftPremium#6c6274fa flags:# currency:string amount:long months:int crypto_currency:flags.0?string crypto_amount:flags.0?long message:flags.1?TextWithEntities = MessageAction;
|
||||
messageActionTopicCreate#d999256 flags:# title:string icon_color:int icon_emoji_id:flags.0?long = MessageAction;
|
||||
messageActionGiftPremium#48e91302 flags:# currency:string amount:long days:int crypto_currency:flags.0?string crypto_amount:flags.0?long message:flags.1?TextWithEntities = MessageAction;
|
||||
messageActionTopicCreate#d999256 flags:# title_missing:flags.1?true title:string icon_color:int icon_emoji_id:flags.0?long = MessageAction;
|
||||
messageActionTopicEdit#c0944820 flags:# title:flags.0?string icon_emoji_id:flags.1?long closed:flags.2?Bool hidden:flags.3?Bool = MessageAction;
|
||||
messageActionSuggestProfilePhoto#57de635e photo:Photo = MessageAction;
|
||||
messageActionRequestedPeer#31518e9b button_id:int peers:Vector<Peer> = MessageAction;
|
||||
messageActionSetChatWallPaper#5060a3f4 flags:# same:flags.0?true for_both:flags.1?true wallpaper:WallPaper = MessageAction;
|
||||
messageActionGiftCode#56d03994 flags:# via_giveaway:flags.0?true unclaimed:flags.5?true boost_peer:flags.1?Peer months:int slug:string currency:flags.2?string amount:flags.2?long crypto_currency:flags.3?string crypto_amount:flags.3?long message:flags.4?TextWithEntities = MessageAction;
|
||||
messageActionGiftCode#31c48347 flags:# via_giveaway:flags.0?true unclaimed:flags.5?true boost_peer:flags.1?Peer days:int slug:string currency:flags.2?string amount:flags.2?long crypto_currency:flags.3?string crypto_amount:flags.3?long message:flags.4?TextWithEntities = MessageAction;
|
||||
messageActionGiveawayLaunch#a80f51e4 flags:# stars:flags.0?long = MessageAction;
|
||||
messageActionGiveawayResults#87e2f155 flags:# stars:flags.0?true winners_count:int unclaimed_count:int = MessageAction;
|
||||
messageActionBoostApply#cc02aa6d boosts:int = MessageAction;
|
||||
|
|
@ -192,11 +195,20 @@ messageActionRequestedPeerSentMe#93b31848 button_id:int peers:Vector<RequestedPe
|
|||
messageActionPaymentRefunded#41b3e202 flags:# peer:Peer currency:string total_amount:long payload:flags.0?bytes charge:PaymentCharge = MessageAction;
|
||||
messageActionGiftStars#45d5b021 flags:# currency:string amount:long stars:long crypto_currency:flags.0?string crypto_amount:flags.0?long transaction_id:flags.1?string = MessageAction;
|
||||
messageActionPrizeStars#b00c47a2 flags:# unclaimed:flags.0?true stars:long transaction_id:string boost_peer:Peer giveaway_msg_id:int = MessageAction;
|
||||
messageActionStarGift#4717e8a4 flags:# name_hidden:flags.0?true saved:flags.2?true converted:flags.3?true upgraded:flags.5?true refunded:flags.9?true can_upgrade:flags.10?true gift:StarGift message:flags.1?TextWithEntities convert_stars:flags.4?long upgrade_msg_id:flags.5?int upgrade_stars:flags.8?long from_id:flags.11?Peer peer:flags.12?Peer saved_id:flags.12?long = MessageAction;
|
||||
messageActionStarGiftUnique#2e3ae60e flags:# upgrade:flags.0?true transferred:flags.1?true saved:flags.2?true refunded:flags.5?true gift:StarGift can_export_at:flags.3?int transfer_stars:flags.4?long from_id:flags.6?Peer peer:flags.7?Peer saved_id:flags.7?long resale_stars:flags.8?long can_transfer_at:flags.9?int can_resell_at:flags.10?int = MessageAction;
|
||||
messageActionStarGift#ea2c31d3 flags:# name_hidden:flags.0?true saved:flags.2?true converted:flags.3?true upgraded:flags.5?true refunded:flags.9?true can_upgrade:flags.10?true prepaid_upgrade:flags.13?true upgrade_separate:flags.16?true auction_acquired:flags.17?true gift:StarGift message:flags.1?TextWithEntities convert_stars:flags.4?long upgrade_msg_id:flags.5?int upgrade_stars:flags.8?long from_id:flags.11?Peer peer:flags.12?Peer saved_id:flags.12?long prepaid_upgrade_hash:flags.14?string gift_msg_id:flags.15?int to_id:flags.18?Peer gift_num:flags.19?int = MessageAction;
|
||||
messageActionStarGiftUnique#95728543 flags:# upgrade:flags.0?true transferred:flags.1?true saved:flags.2?true refunded:flags.5?true prepaid_upgrade:flags.11?true assigned:flags.13?true from_offer:flags.14?true gift:StarGift can_export_at:flags.3?int transfer_stars:flags.4?long from_id:flags.6?Peer peer:flags.7?Peer saved_id:flags.7?long resale_amount:flags.8?StarsAmount can_transfer_at:flags.9?int can_resell_at:flags.10?int drop_original_details_stars:flags.12?long = MessageAction;
|
||||
messageActionPaidMessagesRefunded#ac1f1fcd count:int stars:long = MessageAction;
|
||||
messageActionPaidMessagesPrice#84b88578 flags:# broadcast_messages_allowed:flags.0?true stars:long = MessageAction;
|
||||
messageActionConferenceCall#2ffe2f7a flags:# missed:flags.0?true active:flags.1?true video:flags.4?true call_id:long duration:flags.2?int other_participants:flags.3?Vector<Peer> = MessageAction;
|
||||
messageActionTodoCompletions#cc7c5c89 completed:Vector<int> incompleted:Vector<int> = MessageAction;
|
||||
messageActionTodoAppendTasks#c7edbc83 list:Vector<TodoItem> = MessageAction;
|
||||
messageActionSuggestedPostApproval#ee7a1596 flags:# rejected:flags.0?true balance_too_low:flags.1?true reject_comment:flags.2?string schedule_date:flags.3?int price:flags.4?StarsAmount = MessageAction;
|
||||
messageActionSuggestedPostSuccess#95ddcf69 price:StarsAmount = MessageAction;
|
||||
messageActionSuggestedPostRefund#69f916f8 flags:# payer_initiated:flags.0?true = MessageAction;
|
||||
messageActionGiftTon#a8a3c699 flags:# currency:string amount:long crypto_currency:string crypto_amount:long transaction_id:flags.0?string = MessageAction;
|
||||
messageActionSuggestBirthday#2c8f2a25 birthday:Birthday = MessageAction;
|
||||
messageActionStarGiftPurchaseOffer#774278d4 flags:# accepted:flags.0?true declined:flags.1?true gift:StarGift price:StarsAmount expires_at:int = MessageAction;
|
||||
messageActionStarGiftPurchaseOfferDeclined#73ada76b flags:# expired:flags.0?true gift:StarGift price:StarsAmount = MessageAction;
|
||||
|
||||
dialog#d58a08c6 flags:# pinned:flags.2?true unread_mark:flags.3?true view_forum_as_messages:flags.6?true peer:Peer top_message:int read_inbox_max_id:int read_outbox_max_id:int unread_count:int unread_mentions_count:int unread_reactions_count:int notify_settings:PeerNotifySettings pts:flags.0?int draft:flags.1?DraftMessage folder_id:flags.4?int ttl_period:flags.5?int = Dialog;
|
||||
dialogFolder#71bd134c flags:# pinned:flags.2?true folder:Folder peer:Peer top_message:int unread_muted_peers_count:int unread_unmuted_peers_count:int unread_muted_messages_count:int unread_unmuted_messages_count:int = Dialog;
|
||||
|
|
@ -216,7 +228,7 @@ geoPoint#b2a2f663 flags:# long:double lat:double access_hash:long accuracy_radiu
|
|||
|
||||
auth.sentCode#5e002502 flags:# type:auth.SentCodeType phone_code_hash:string next_type:flags.1?auth.CodeType timeout:flags.2?int = auth.SentCode;
|
||||
auth.sentCodeSuccess#2390fe44 authorization:auth.Authorization = auth.SentCode;
|
||||
auth.sentCodePaymentRequired#d7cef980 store_product:string phone_code_hash:string = auth.SentCode;
|
||||
auth.sentCodePaymentRequired#e0955a3c store_product:string phone_code_hash:string support_email_address:string support_email_subject:string currency:string amount:long = auth.SentCode;
|
||||
|
||||
auth.authorization#2ea2c0d4 flags:# setup_password_required:flags.1?true otherwise_relogin_days:flags.1?int tmp_sessions:flags.0?int future_auth_token:flags.2?bytes user:User = auth.Authorization;
|
||||
auth.authorizationSignUpRequired#44747e9a flags:# terms_of_service:flags.0?help.TermsOfService = auth.Authorization;
|
||||
|
|
@ -249,7 +261,7 @@ inputReportReasonFake#f5ddd6e7 = ReportReason;
|
|||
inputReportReasonIllegalDrugs#a8eb2be = ReportReason;
|
||||
inputReportReasonPersonalDetails#9ec7863d = ReportReason;
|
||||
|
||||
userFull#99e78045 flags:# blocked:flags.0?true phone_calls_available:flags.4?true phone_calls_private:flags.5?true can_pin_message:flags.7?true has_scheduled:flags.12?true video_calls_available:flags.13?true voice_messages_forbidden:flags.20?true translations_disabled:flags.23?true stories_pinned_available:flags.26?true blocked_my_stories_from:flags.27?true wallpaper_overridden:flags.28?true contact_require_premium:flags.29?true read_dates_private:flags.30?true flags2:# sponsored_enabled:flags2.7?true can_view_revenue:flags2.9?true bot_can_manage_emoji_status:flags2.10?true display_gifts_button:flags2.16?true id:long about:flags.1?string settings:PeerSettings personal_photo:flags.21?Photo profile_photo:flags.2?Photo fallback_photo:flags.22?Photo notify_settings:PeerNotifySettings bot_info:flags.3?BotInfo pinned_msg_id:flags.6?int common_chats_count:int folder_id:flags.11?int ttl_period:flags.14?int theme_emoticon:flags.15?string private_forward_name:flags.16?string bot_group_admin_rights:flags.17?ChatAdminRights bot_broadcast_admin_rights:flags.18?ChatAdminRights wallpaper:flags.24?WallPaper stories:flags.25?PeerStories business_work_hours:flags2.0?BusinessWorkHours business_location:flags2.1?BusinessLocation business_greeting_message:flags2.2?BusinessGreetingMessage business_away_message:flags2.3?BusinessAwayMessage business_intro:flags2.4?BusinessIntro birthday:flags2.5?Birthday personal_channel_id:flags2.6?long personal_channel_message:flags2.6?int stargifts_count:flags2.8?int starref_program:flags2.11?StarRefProgram bot_verification:flags2.12?BotVerification send_paid_messages_stars:flags2.14?long disallowed_gifts:flags2.15?DisallowedGiftsSettings = UserFull;
|
||||
userFull#a02bc13e flags:# blocked:flags.0?true phone_calls_available:flags.4?true phone_calls_private:flags.5?true can_pin_message:flags.7?true has_scheduled:flags.12?true video_calls_available:flags.13?true voice_messages_forbidden:flags.20?true translations_disabled:flags.23?true stories_pinned_available:flags.26?true blocked_my_stories_from:flags.27?true wallpaper_overridden:flags.28?true contact_require_premium:flags.29?true read_dates_private:flags.30?true flags2:# sponsored_enabled:flags2.7?true can_view_revenue:flags2.9?true bot_can_manage_emoji_status:flags2.10?true display_gifts_button:flags2.16?true id:long about:flags.1?string settings:PeerSettings personal_photo:flags.21?Photo profile_photo:flags.2?Photo fallback_photo:flags.22?Photo notify_settings:PeerNotifySettings bot_info:flags.3?BotInfo pinned_msg_id:flags.6?int common_chats_count:int folder_id:flags.11?int ttl_period:flags.14?int theme:flags.15?ChatTheme private_forward_name:flags.16?string bot_group_admin_rights:flags.17?ChatAdminRights bot_broadcast_admin_rights:flags.18?ChatAdminRights wallpaper:flags.24?WallPaper stories:flags.25?PeerStories business_work_hours:flags2.0?BusinessWorkHours business_location:flags2.1?BusinessLocation business_greeting_message:flags2.2?BusinessGreetingMessage business_away_message:flags2.3?BusinessAwayMessage business_intro:flags2.4?BusinessIntro birthday:flags2.5?Birthday personal_channel_id:flags2.6?long personal_channel_message:flags2.6?int stargifts_count:flags2.8?int starref_program:flags2.11?StarRefProgram bot_verification:flags2.12?BotVerification send_paid_messages_stars:flags2.14?long disallowed_gifts:flags2.15?DisallowedGiftsSettings stars_rating:flags2.17?StarsRating stars_my_pending_rating:flags2.18?StarsRating stars_my_pending_rating_date:flags2.18?int main_tab:flags2.20?ProfileTab saved_music:flags2.21?Document note:flags2.22?TextWithEntities = UserFull;
|
||||
|
||||
contact#145ade0b user_id:long mutual:Bool = Contact;
|
||||
|
||||
|
|
@ -269,8 +281,8 @@ messages.dialogs#15ba6c40 dialogs:Vector<Dialog> messages:Vector<Message> chats:
|
|||
messages.dialogsSlice#71e094f3 count:int dialogs:Vector<Dialog> messages:Vector<Message> chats:Vector<Chat> users:Vector<User> = messages.Dialogs;
|
||||
messages.dialogsNotModified#f0e3e596 count:int = messages.Dialogs;
|
||||
|
||||
messages.messages#8c718e87 messages:Vector<Message> chats:Vector<Chat> users:Vector<User> = messages.Messages;
|
||||
messages.messagesSlice#3a54685e flags:# inexact:flags.1?true count:int next_rate:flags.0?int offset_id_offset:flags.2?int messages:Vector<Message> chats:Vector<Chat> users:Vector<User> = messages.Messages;
|
||||
messages.messages#1d73e7ea messages:Vector<Message> topics:Vector<ForumTopic> chats:Vector<Chat> users:Vector<User> = messages.Messages;
|
||||
messages.messagesSlice#5f206716 flags:# inexact:flags.1?true count:int next_rate:flags.0?int offset_id_offset:flags.2?int search_flood:flags.3?SearchPostsFlood messages:Vector<Message> topics:Vector<ForumTopic> chats:Vector<Chat> users:Vector<User> = messages.Messages;
|
||||
messages.channelMessages#c776ba4e flags:# inexact:flags.1?true pts:int count:int offset_id_offset:flags.2?int messages:Vector<Message> topics:Vector<ForumTopic> chats:Vector<Chat> users:Vector<User> = messages.Messages;
|
||||
messages.messagesNotModified#74535f21 count:int = messages.Messages;
|
||||
|
||||
|
|
@ -302,7 +314,7 @@ inputMessagesFilterPinned#1bb00451 = MessagesFilter;
|
|||
updateNewMessage#1f2b0afd message:Message pts:int pts_count:int = Update;
|
||||
updateMessageID#4e90bfd6 id:int random_id:long = Update;
|
||||
updateDeleteMessages#a20db0e5 messages:Vector<int> pts:int pts_count:int = Update;
|
||||
updateUserTyping#c01e857f user_id:long action:SendMessageAction = Update;
|
||||
updateUserTyping#2a17bf5c flags:# user_id:long top_msg_id:flags.0?int action:SendMessageAction = Update;
|
||||
updateChatUserTyping#83487af0 chat_id:long from_id:Peer action:SendMessageAction = Update;
|
||||
updateChatParticipants#7761198 participants:ChatParticipants = Update;
|
||||
updateUserStatus#e5bdf8de user_id:long status:UserStatus = Update;
|
||||
|
|
@ -319,7 +331,7 @@ updateNotifySettings#bec268ef peer:NotifyPeer notify_settings:PeerNotifySettings
|
|||
updateServiceNotification#ebe46819 flags:# popup:flags.0?true invert_media:flags.2?true inbox_date:flags.1?int type:string message:string media:MessageMedia entities:Vector<MessageEntity> = Update;
|
||||
updatePrivacy#ee3b272a key:PrivacyKey rules:Vector<PrivacyRule> = Update;
|
||||
updateUserPhone#5492a13 user_id:long phone:string = Update;
|
||||
updateReadHistoryInbox#9c974fdf flags:# folder_id:flags.0?int peer:Peer max_id:int still_unread_count:int pts:int pts_count:int = Update;
|
||||
updateReadHistoryInbox#9e84bc99 flags:# folder_id:flags.0?int peer:Peer top_msg_id:flags.1?int max_id:int still_unread_count:int pts:int pts_count:int = Update;
|
||||
updateReadHistoryOutbox#2f2f21bf peer:Peer max_id:int pts:int pts_count:int = Update;
|
||||
updateWebPage#7f891213 webpage:WebPage pts:int pts_count:int = Update;
|
||||
updateReadMessagesContents#f8227181 flags:# messages:Vector<int> pts:int pts_count:int date:flags.0?int = Update;
|
||||
|
|
@ -385,7 +397,7 @@ updatePinnedMessages#ed85eab5 flags:# pinned:flags.0?true peer:Peer messages:Vec
|
|||
updatePinnedChannelMessages#5bb98608 flags:# pinned:flags.0?true channel_id:long messages:Vector<int> pts:int pts_count:int = Update;
|
||||
updateChat#f89a6a4e chat_id:long = Update;
|
||||
updateGroupCallParticipants#f2ebdb4e call:InputGroupCall participants:Vector<GroupCallParticipant> version:int = Update;
|
||||
updateGroupCall#97d64341 flags:# chat_id:flags.0?long call:GroupCall = Update;
|
||||
updateGroupCall#9d2216e0 flags:# live_story:flags.2?true peer:flags.1?Peer call:GroupCall = Update;
|
||||
updatePeerHistoryTTL#bb9bb9a5 flags:# peer:Peer ttl_period:flags.0?int = Update;
|
||||
updateChatParticipant#d087663a flags:# chat_id:long date:int actor_id:long user_id:long prev_participant:flags.0?ChatParticipant new_participant:flags.1?ChatParticipant invite:flags.2?ExportedChatInvite qts:int = Update;
|
||||
updateChannelParticipant#985d3abb flags:# via_chatlist:flags.3?true channel_id:long date:int actor_id:long user_id:long prev_participant:flags.0?ChannelParticipant new_participant:flags.1?ChannelParticipant invite:flags.2?ExportedChatInvite qts:int = Update;
|
||||
|
|
@ -406,8 +418,6 @@ updateRecentEmojiStatuses#30f443db = Update;
|
|||
updateRecentReactions#6f7863f4 = Update;
|
||||
updateMoveStickerSetToTop#86fccf85 flags:# masks:flags.0?true emojis:flags.1?true stickerset:long = Update;
|
||||
updateMessageExtendedMedia#d5a41724 peer:Peer msg_id:int extended_media:Vector<MessageExtendedMedia> = Update;
|
||||
updateChannelPinnedTopic#192efbe3 flags:# pinned:flags.0?true channel_id:long topic_id:int = Update;
|
||||
updateChannelPinnedTopics#fe198602 flags:# channel_id:long order:flags.0?Vector<int> = Update;
|
||||
updateUser#20529438 user_id:long = Update;
|
||||
updateAutoSaveSettings#ec05b097 = Update;
|
||||
updateStory#75b3b798 peer:Peer story:StoryItem = Update;
|
||||
|
|
@ -434,7 +444,6 @@ updateBotNewBusinessMessage#9ddb347c flags:# connection_id:string message:Messag
|
|||
updateBotEditBusinessMessage#7df587c flags:# connection_id:string message:Message reply_to_message:flags.0?Message qts:int = Update;
|
||||
updateBotDeleteBusinessMessage#a02a982e connection_id:string peer:Peer messages:Vector<int> qts:int = Update;
|
||||
updateNewStoryReaction#1824e40b story_id:int peer:Peer reaction:Reaction = Update;
|
||||
updateBroadcastRevenueTransactions#dfd961f5 peer:Peer balances:BroadcastRevenueBalances = Update;
|
||||
updateStarsBalance#4e80a379 balance:StarsAmount = Update;
|
||||
updateBusinessBotCallbackQuery#1ea2fda7 flags:# query_id:long user_id:long connection_id:string message:Message reply_to_message:flags.2?Message chat_instance:long data:flags.0?bytes = Update;
|
||||
updateStarsRevenueStatus#a584b019 peer:Peer status:StarsRevenueStatus = Update;
|
||||
|
|
@ -444,6 +453,14 @@ updateSentPhoneCode#504aa18f sent_code:auth.SentCode = Update;
|
|||
updateGroupCallChainBlocks#a477288f call:InputGroupCall sub_chain_id:int blocks:Vector<bytes> next_offset:int = Update;
|
||||
updateReadMonoForumInbox#77b0e372 channel_id:long saved_peer_id:Peer read_max_id:int = Update;
|
||||
updateReadMonoForumOutbox#a4a79376 channel_id:long saved_peer_id:Peer read_max_id:int = Update;
|
||||
updateMonoForumNoPaidException#9f812b08 flags:# exception:flags.0?true channel_id:long saved_peer_id:Peer = Update;
|
||||
updateGroupCallMessage#d8326f0d call:InputGroupCall message:GroupCallMessage = Update;
|
||||
updateGroupCallEncryptedMessage#c957a766 call:InputGroupCall from_id:Peer encrypted_message:bytes = Update;
|
||||
updatePinnedForumTopic#683b2c52 flags:# pinned:flags.0?true peer:Peer topic_id:int = Update;
|
||||
updatePinnedForumTopics#def143d0 flags:# peer:Peer order:flags.0?Vector<int> = Update;
|
||||
updateDeleteGroupCallMessages#3e85e92c call:InputGroupCall messages:Vector<int> = Update;
|
||||
updateStarGiftAuctionState#48e246c2 gift_id:long state:StarGiftAuctionState = Update;
|
||||
updateStarGiftAuctionUserState#dc58f31e gift_id:long user_state:StarGiftAuctionUserState = Update;
|
||||
|
||||
updates.state#a56c2a3e pts:int qts:int date:int seq:int unread_count:int = updates.State;
|
||||
|
||||
|
|
@ -536,6 +553,7 @@ sendMessageHistoryImportAction#dbda9246 progress:int = SendMessageAction;
|
|||
sendMessageChooseStickerAction#b05ac6b1 = SendMessageAction;
|
||||
sendMessageEmojiInteraction#25972bcb emoticon:string msg_id:int interaction:DataJSON = SendMessageAction;
|
||||
sendMessageEmojiInteractionSeen#b665902e emoticon:string = SendMessageAction;
|
||||
sendMessageTextDraftAction#376d975c random_id:long text:TextWithEntities = SendMessageAction;
|
||||
|
||||
contacts.found#b3134d9d my_results:Vector<Peer> results:Vector<Peer> chats:Vector<Chat> users:Vector<User> = contacts.Found;
|
||||
|
||||
|
|
@ -552,6 +570,7 @@ inputPrivacyKeyAbout#3823cc40 = InputPrivacyKey;
|
|||
inputPrivacyKeyBirthday#d65a11cc = InputPrivacyKey;
|
||||
inputPrivacyKeyStarGiftsAutoSave#e1732341 = InputPrivacyKey;
|
||||
inputPrivacyKeyNoPaidMessages#bdc597b4 = InputPrivacyKey;
|
||||
inputPrivacyKeySavedMusic#4dbe9226 = InputPrivacyKey;
|
||||
|
||||
privacyKeyStatusTimestamp#bc2eab30 = PrivacyKey;
|
||||
privacyKeyChatInvite#500e6dfa = PrivacyKey;
|
||||
|
|
@ -566,6 +585,7 @@ privacyKeyAbout#a486b761 = PrivacyKey;
|
|||
privacyKeyBirthday#2000a518 = PrivacyKey;
|
||||
privacyKeyStarGiftsAutoSave#2ca4fdf8 = PrivacyKey;
|
||||
privacyKeyNoPaidMessages#17d348d2 = PrivacyKey;
|
||||
privacyKeySavedMusic#ff7a571b = PrivacyKey;
|
||||
|
||||
inputPrivacyValueAllowContacts#d09e07b = InputPrivacyRule;
|
||||
inputPrivacyValueAllowAll#184b35ce = InputPrivacyRule;
|
||||
|
|
@ -653,6 +673,7 @@ inputStickerSetEmojiGenericAnimations#4c4d4ce = InputStickerSet;
|
|||
inputStickerSetEmojiDefaultStatuses#29d0f5ee = InputStickerSet;
|
||||
inputStickerSetEmojiDefaultTopicIcons#44c1f8e9 = InputStickerSet;
|
||||
inputStickerSetEmojiChannelDefaultStatuses#49748553 = InputStickerSet;
|
||||
inputStickerSetTonGifts#1cf671a0 = InputStickerSet;
|
||||
|
||||
stickerSet#2dd14edc flags:# archived:flags.1?true official:flags.2?true masks:flags.3?true emojis:flags.7?true text_color:flags.9?true channel_emoji_status:flags.10?true creator:flags.11?true installed_date:flags.0?int id:long access_hash:long title:string short_name:string thumbs:flags.4?Vector<PhotoSize> thumb_dc_id:flags.4?int thumb_version:flags.4?int thumb_document_id:flags.8?long count:int hash:int = StickerSet;
|
||||
|
||||
|
|
@ -831,7 +852,7 @@ contacts.topPeers#70b772a8 categories:Vector<TopPeerCategoryPeers> chats:Vector<
|
|||
contacts.topPeersDisabled#b52c939d = contacts.TopPeers;
|
||||
|
||||
draftMessageEmpty#1b0c841a flags:# date:flags.0?int = DraftMessage;
|
||||
draftMessage#2d65321f flags:# no_webpage:flags.1?true invert_media:flags.6?true reply_to:flags.4?InputReplyTo message:string entities:flags.3?Vector<MessageEntity> media:flags.5?InputMedia date:int effect:flags.7?long = DraftMessage;
|
||||
draftMessage#96eaa5eb flags:# no_webpage:flags.1?true invert_media:flags.6?true reply_to:flags.4?InputReplyTo message:string entities:flags.3?Vector<MessageEntity> media:flags.5?InputMedia date:int effect:flags.7?long suggested_post:flags.8?SuggestedPost = DraftMessage;
|
||||
|
||||
messages.featuredStickersNotModified#c6dc0c66 count:int = messages.FeaturedStickers;
|
||||
messages.featuredStickers#be382906 flags:# premium:flags.0?true hash:long count:int sets:Vector<StickerSetCovered> unread:Vector<long> = messages.FeaturedStickers;
|
||||
|
|
@ -1211,7 +1232,7 @@ chatOnlines#f041e250 onlines:int = ChatOnlines;
|
|||
|
||||
statsURL#47a971e0 url:string = StatsURL;
|
||||
|
||||
chatAdminRights#5fb224d5 flags:# change_info:flags.0?true post_messages:flags.1?true edit_messages:flags.2?true delete_messages:flags.3?true ban_users:flags.4?true invite_users:flags.5?true pin_messages:flags.7?true add_admins:flags.9?true anonymous:flags.10?true manage_call:flags.11?true other:flags.12?true manage_topics:flags.13?true post_stories:flags.14?true edit_stories:flags.15?true delete_stories:flags.16?true = ChatAdminRights;
|
||||
chatAdminRights#5fb224d5 flags:# change_info:flags.0?true post_messages:flags.1?true edit_messages:flags.2?true delete_messages:flags.3?true ban_users:flags.4?true invite_users:flags.5?true pin_messages:flags.7?true add_admins:flags.9?true anonymous:flags.10?true manage_call:flags.11?true other:flags.12?true manage_topics:flags.13?true post_stories:flags.14?true edit_stories:flags.15?true delete_stories:flags.16?true manage_direct_messages:flags.17?true = ChatAdminRights;
|
||||
|
||||
chatBannedRights#9f120418 flags:# view_messages:flags.0?true send_messages:flags.1?true send_media:flags.2?true send_stickers:flags.3?true send_gifs:flags.4?true send_games:flags.5?true send_inline:flags.6?true embed_links:flags.7?true send_polls:flags.8?true change_info:flags.10?true invite_users:flags.15?true pin_messages:flags.17?true manage_topics:flags.18?true send_photos:flags.19?true send_videos:flags.20?true send_roundvideos:flags.21?true send_audios:flags.22?true send_voices:flags.23?true send_docs:flags.24?true send_plain:flags.25?true until_date:int = ChatBannedRights;
|
||||
|
||||
|
|
@ -1289,6 +1310,8 @@ webPageAttributeTheme#54b56617 flags:# documents:flags.0?Vector<Document> settin
|
|||
webPageAttributeStory#2e94c3e7 flags:# peer:Peer id:int story:flags.0?StoryItem = WebPageAttribute;
|
||||
webPageAttributeStickerSet#50cc03d3 flags:# emojis:flags.0?true text_color:flags.1?true stickers:Vector<Document> = WebPageAttribute;
|
||||
webPageAttributeUniqueStarGift#cf6f6db8 gift:StarGift = WebPageAttribute;
|
||||
webPageAttributeStarGiftCollection#31cad303 icons:Vector<Document> = WebPageAttribute;
|
||||
webPageAttributeStarGiftAuction#1c641c2 gift:StarGift end_date:int = WebPageAttribute;
|
||||
|
||||
messages.votesList#4899484e flags:# count:int votes:Vector<MessagePeerVote> chats:Vector<Chat> users:Vector<User> next_offset:flags.0?string = messages.VotesList;
|
||||
|
||||
|
|
@ -1344,7 +1367,7 @@ messages.messageViews#b6c4f543 views:Vector<MessageViews> chats:Vector<Chat> use
|
|||
|
||||
messages.discussionMessage#a6341782 flags:# messages:Vector<Message> max_id:flags.0?int read_inbox_max_id:flags.1?int read_outbox_max_id:flags.2?int unread_count:int chats:Vector<Chat> users:Vector<User> = messages.DiscussionMessage;
|
||||
|
||||
messageReplyHeader#afbc09db flags:# reply_to_scheduled:flags.2?true forum_topic:flags.3?true quote:flags.9?true reply_to_msg_id:flags.4?int reply_to_peer_id:flags.0?Peer reply_from:flags.5?MessageFwdHeader reply_media:flags.8?MessageMedia reply_to_top_id:flags.1?int quote_text:flags.6?string quote_entities:flags.7?Vector<MessageEntity> quote_offset:flags.10?int = MessageReplyHeader;
|
||||
messageReplyHeader#6917560b flags:# reply_to_scheduled:flags.2?true forum_topic:flags.3?true quote:flags.9?true reply_to_msg_id:flags.4?int reply_to_peer_id:flags.0?Peer reply_from:flags.5?MessageFwdHeader reply_media:flags.8?MessageMedia reply_to_top_id:flags.1?int quote_text:flags.6?string quote_entities:flags.7?Vector<MessageEntity> quote_offset:flags.10?int todo_item_id:flags.11?int = MessageReplyHeader;
|
||||
messageReplyStoryHeader#e5af939 peer:Peer story_id:int = MessageReplyHeader;
|
||||
|
||||
messageReplies#83d60fc2 flags:# comments:flags.0?true replies:int replies_pts:int recent_repliers:flags.1?Vector<Peer> channel_id:flags.0?long max_id:flags.2?int read_max_id:flags.3?int = MessageReplies;
|
||||
|
|
@ -1354,13 +1377,13 @@ peerBlocked#e8fd8014 peer_id:Peer date:int = PeerBlocked;
|
|||
stats.messageStats#7fe91c14 views_graph:StatsGraph reactions_by_emotion_graph:StatsGraph = stats.MessageStats;
|
||||
|
||||
groupCallDiscarded#7780bcb4 id:long access_hash:long duration:int = GroupCall;
|
||||
groupCall#553b0ba1 flags:# join_muted:flags.1?true can_change_join_muted:flags.2?true join_date_asc:flags.6?true schedule_start_subscribed:flags.8?true can_start_video:flags.9?true record_video_active:flags.11?true rtmp_stream:flags.12?true listeners_hidden:flags.13?true conference:flags.14?true creator:flags.15?true id:long access_hash:long participants_count:int title:flags.3?string stream_dc_id:flags.4?int record_start_date:flags.5?int schedule_date:flags.7?int unmuted_video_count:flags.10?int unmuted_video_limit:int version:int invite_link:flags.16?string = GroupCall;
|
||||
groupCall#efb2b617 flags:# join_muted:flags.1?true can_change_join_muted:flags.2?true join_date_asc:flags.6?true schedule_start_subscribed:flags.8?true can_start_video:flags.9?true record_video_active:flags.11?true rtmp_stream:flags.12?true listeners_hidden:flags.13?true conference:flags.14?true creator:flags.15?true messages_enabled:flags.17?true can_change_messages_enabled:flags.18?true min:flags.19?true id:long access_hash:long participants_count:int title:flags.3?string stream_dc_id:flags.4?int record_start_date:flags.5?int schedule_date:flags.7?int unmuted_video_count:flags.10?int unmuted_video_limit:int version:int invite_link:flags.16?string send_paid_messages_stars:flags.20?long default_send_as:flags.21?Peer = GroupCall;
|
||||
|
||||
inputGroupCall#d8aa840f id:long access_hash:long = InputGroupCall;
|
||||
inputGroupCallSlug#fe06823f slug:string = InputGroupCall;
|
||||
inputGroupCallInviteMessage#8c10603f msg_id:int = InputGroupCall;
|
||||
|
||||
groupCallParticipant#eba636fe flags:# muted:flags.0?true left:flags.1?true can_self_unmute:flags.2?true just_joined:flags.4?true versioned:flags.5?true min:flags.8?true muted_by_you:flags.9?true volume_by_admin:flags.10?true self:flags.12?true video_joined:flags.15?true peer:Peer date:int active_date:flags.3?int source:int volume:flags.7?int about:flags.11?string raise_hand_rating:flags.13?long video:flags.6?GroupCallParticipantVideo presentation:flags.14?GroupCallParticipantVideo = GroupCallParticipant;
|
||||
groupCallParticipant#2a3dc7ac flags:# muted:flags.0?true left:flags.1?true can_self_unmute:flags.2?true just_joined:flags.4?true versioned:flags.5?true min:flags.8?true muted_by_you:flags.9?true volume_by_admin:flags.10?true self:flags.12?true video_joined:flags.15?true peer:Peer date:int active_date:flags.3?int source:int volume:flags.7?int about:flags.11?string raise_hand_rating:flags.13?long video:flags.6?GroupCallParticipantVideo presentation:flags.14?GroupCallParticipantVideo paid_stars_total:flags.16?long = GroupCallParticipant;
|
||||
|
||||
phone.groupCall#9e727aad call:GroupCall participants:Vector<GroupCallParticipant> participants_next_offset:string chats:Vector<Chat> users:Vector<User> = phone.GroupCall;
|
||||
|
||||
|
|
@ -1416,9 +1439,15 @@ account.resetPasswordFailedWait#e3779861 retry_date:int = account.ResetPasswordR
|
|||
account.resetPasswordRequestedWait#e9effc7d until_date:int = account.ResetPasswordResult;
|
||||
account.resetPasswordOk#e926d63e = account.ResetPasswordResult;
|
||||
|
||||
sponsoredMessage#4d93a990 flags:# recommended:flags.5?true can_report:flags.12?true random_id:bytes url:string title:string message:string entities:flags.1?Vector<MessageEntity> photo:flags.6?Photo media:flags.14?MessageMedia color:flags.13?PeerColor button_text:string sponsor_info:flags.7?string additional_info:flags.8?string = SponsoredMessage;
|
||||
chatTheme#c3dffc04 emoticon:string = ChatTheme;
|
||||
chatThemeUniqueGift#3458f9c8 gift:StarGift theme_settings:Vector<ThemeSettings> = ChatTheme;
|
||||
|
||||
messages.sponsoredMessages#c9ee1d87 flags:# posts_between:flags.0?int messages:Vector<SponsoredMessage> chats:Vector<Chat> users:Vector<User> = messages.SponsoredMessages;
|
||||
account.chatThemesNotModified#e011e1c4 = account.ChatThemes;
|
||||
account.chatThemes#be098173 flags:# hash:long themes:Vector<ChatTheme> chats:Vector<Chat> users:Vector<User> next_offset:flags.0?string = account.ChatThemes;
|
||||
|
||||
sponsoredMessage#7dbf8673 flags:# recommended:flags.5?true can_report:flags.12?true random_id:bytes url:string title:string message:string entities:flags.1?Vector<MessageEntity> photo:flags.6?Photo media:flags.14?MessageMedia color:flags.13?PeerColor button_text:string sponsor_info:flags.7?string additional_info:flags.8?string min_display_duration:flags.15?int max_display_duration:flags.15?int = SponsoredMessage;
|
||||
|
||||
messages.sponsoredMessages#ffda656d flags:# posts_between:flags.0?int start_delay:flags.1?int between_delay:flags.2?int messages:Vector<SponsoredMessage> chats:Vector<Chat> users:Vector<User> = messages.SponsoredMessages;
|
||||
messages.sponsoredMessagesEmpty#1839490f = messages.SponsoredMessages;
|
||||
|
||||
searchResultsCalendarPeriod#c9b0539f date:int min_msg_id:int max_msg_id:int count:int = SearchResultsCalendarPeriod;
|
||||
|
|
@ -1502,7 +1531,11 @@ inputInvoiceStarGiftUpgrade#4d818d5d flags:# keep_original_details:flags.0?true
|
|||
inputInvoiceStarGiftTransfer#4a5f5bd9 stargift:InputSavedStarGift to_id:InputPeer = InputInvoice;
|
||||
inputInvoicePremiumGiftStars#dabab2ef flags:# user_id:InputUser months:int message:flags.0?TextWithEntities = InputInvoice;
|
||||
inputInvoiceBusinessBotTransferStars#f4997e42 bot:InputUser stars:long = InputInvoice;
|
||||
inputInvoiceStarGiftResale#63cbc38c slug:string to_id:InputPeer = InputInvoice;
|
||||
inputInvoiceStarGiftResale#c39f5324 flags:# ton:flags.0?true slug:string to_id:InputPeer = InputInvoice;
|
||||
inputInvoiceStarGiftPrepaidUpgrade#9a0b48b8 peer:InputPeer hash:string = InputInvoice;
|
||||
inputInvoicePremiumAuthCode#3e77f614 purpose:InputStorePaymentPurpose = InputInvoice;
|
||||
inputInvoiceStarGiftDropOriginalDetails#923d8d1 stargift:InputSavedStarGift = InputInvoice;
|
||||
inputInvoiceStarGiftAuctionBid#1ecafa10 flags:# hide_name:flags.0?true update_bid:flags.2?true peer:flags.3?InputPeer gift_id:long bid_amount:long message:flags.1?TextWithEntities = InputInvoice;
|
||||
|
||||
payments.exportedInvoice#aed0cbd9 url:string = payments.ExportedInvoice;
|
||||
|
||||
|
|
@ -1514,7 +1547,7 @@ inputStorePaymentPremiumSubscription#a6751e66 flags:# restore:flags.0?true upgra
|
|||
inputStorePaymentGiftPremium#616f7fe8 user_id:InputUser currency:string amount:long = InputStorePaymentPurpose;
|
||||
inputStorePaymentPremiumGiftCode#fb790393 flags:# users:Vector<InputUser> boost_peer:flags.0?InputPeer currency:string amount:long message:flags.1?TextWithEntities = InputStorePaymentPurpose;
|
||||
inputStorePaymentPremiumGiveaway#160544ca flags:# only_new_subscribers:flags.0?true winners_are_visible:flags.3?true boost_peer:InputPeer additional_peers:flags.1?Vector<InputPeer> countries_iso2:flags.2?Vector<string> prize_description:flags.4?string random_id:long until_date:int currency:string amount:long = InputStorePaymentPurpose;
|
||||
inputStorePaymentStarsTopup#dddd0f56 stars:long currency:string amount:long = InputStorePaymentPurpose;
|
||||
inputStorePaymentStarsTopup#f9a2a6cb flags:# stars:long currency:string amount:long spend_purpose_peer:flags.0?InputPeer = InputStorePaymentPurpose;
|
||||
inputStorePaymentStarsGift#1d741ef7 user_id:InputUser stars:long currency:string amount:long = InputStorePaymentPurpose;
|
||||
inputStorePaymentStarsGiveaway#751f08fa flags:# only_new_subscribers:flags.0?true winners_are_visible:flags.3?true stars:long boost_peer:InputPeer additional_peers:flags.1?Vector<InputPeer> countries_iso2:flags.2?Vector<string> prize_description:flags.4?string random_id:long until_date:int currency:string amount:long users:int = InputStorePaymentPurpose;
|
||||
inputStorePaymentAuthCode#9bb2636d flags:# restore:flags.0?true phone_number:string phone_code_hash:string currency:string amount:long = InputStorePaymentPurpose;
|
||||
|
|
@ -1564,7 +1597,7 @@ stickerKeyword#fcfeb29c document_id:long keyword:Vector<string> = StickerKeyword
|
|||
username#b4073647 flags:# editable:flags.0?true active:flags.1?true username:string = Username;
|
||||
|
||||
forumTopicDeleted#23f109b id:int = ForumTopic;
|
||||
forumTopic#71701da9 flags:# my:flags.1?true closed:flags.2?true pinned:flags.3?true short:flags.5?true hidden:flags.6?true id:int date:int title:string icon_color:int icon_emoji_id:flags.0?long top_message:int read_inbox_max_id:int read_outbox_max_id:int unread_count:int unread_mentions_count:int unread_reactions_count:int from_id:Peer notify_settings:PeerNotifySettings draft:flags.4?DraftMessage = ForumTopic;
|
||||
forumTopic#cdff0eca flags:# my:flags.1?true closed:flags.2?true pinned:flags.3?true short:flags.5?true hidden:flags.6?true title_missing:flags.7?true id:int date:int peer:Peer title:string icon_color:int icon_emoji_id:flags.0?long top_message:int read_inbox_max_id:int read_outbox_max_id:int unread_count:int unread_mentions_count:int unread_reactions_count:int from_id:Peer notify_settings:PeerNotifySettings draft:flags.4?DraftMessage = ForumTopic;
|
||||
|
||||
messages.forumTopics#367617d3 flags:# order_by_create_date:flags.0?true count:int topics:Vector<ForumTopic> messages:Vector<Message> chats:Vector<Chat> users:Vector<User> pts:int = messages.ForumTopics;
|
||||
|
||||
|
|
@ -1633,8 +1666,8 @@ messagePeerVoteMultiple#4628f6e6 peer:Peer options:Vector<bytes> date:int = Mess
|
|||
storyViews#8d595cd6 flags:# has_viewers:flags.1?true views_count:int forwards_count:flags.2?int reactions:flags.3?Vector<ReactionCount> reactions_count:flags.4?int recent_viewers:flags.0?Vector<long> = StoryViews;
|
||||
|
||||
storyItemDeleted#51e6ee4f id:int = StoryItem;
|
||||
storyItemSkipped#ffadc913 flags:# close_friends:flags.8?true id:int date:int expire_date:int = StoryItem;
|
||||
storyItem#79b26a24 flags:# pinned:flags.5?true public:flags.7?true close_friends:flags.8?true min:flags.9?true noforwards:flags.10?true edited:flags.11?true contacts:flags.12?true selected_contacts:flags.13?true out:flags.16?true id:int date:int from_id:flags.18?Peer fwd_from:flags.17?StoryFwdHeader expire_date:int caption:flags.0?string entities:flags.1?Vector<MessageEntity> media:MessageMedia media_areas:flags.14?Vector<MediaArea> privacy:flags.2?Vector<PrivacyRule> views:flags.3?StoryViews sent_reaction:flags.15?Reaction = StoryItem;
|
||||
storyItemSkipped#ffadc913 flags:# close_friends:flags.8?true live:flags.9?true id:int date:int expire_date:int = StoryItem;
|
||||
storyItem#edf164f1 flags:# pinned:flags.5?true public:flags.7?true close_friends:flags.8?true min:flags.9?true noforwards:flags.10?true edited:flags.11?true contacts:flags.12?true selected_contacts:flags.13?true out:flags.16?true id:int date:int from_id:flags.18?Peer fwd_from:flags.17?StoryFwdHeader expire_date:int caption:flags.0?string entities:flags.1?Vector<MessageEntity> media:MessageMedia media_areas:flags.14?Vector<MediaArea> privacy:flags.2?Vector<PrivacyRule> views:flags.3?StoryViews sent_reaction:flags.15?Reaction albums:flags.19?Vector<int> = StoryItem;
|
||||
|
||||
stories.allStoriesNotModified#1158fe3e flags:# state:string stealth_mode:StoriesStealthMode = stories.AllStories;
|
||||
stories.allStories#6efc5e81 flags:# has_more:flags.0?true count:int state:string peer_stories:Vector<PeerStories> chats:Vector<Chat> users:Vector<User> stealth_mode:StoriesStealthMode = stories.AllStories;
|
||||
|
|
@ -1649,7 +1682,7 @@ stories.storyViewsList#59d78fc5 flags:# count:int views_count:int forwards_count
|
|||
|
||||
stories.storyViews#de9eed1d views:Vector<StoryViews> users:Vector<User> = stories.StoryViews;
|
||||
|
||||
inputReplyToMessage#b07038b0 flags:# reply_to_msg_id:int top_msg_id:flags.0?int reply_to_peer_id:flags.1?InputPeer quote_text:flags.2?string quote_entities:flags.3?Vector<MessageEntity> quote_offset:flags.4?int monoforum_peer_id:flags.5?InputPeer = InputReplyTo;
|
||||
inputReplyToMessage#869fbe10 flags:# reply_to_msg_id:int top_msg_id:flags.0?int reply_to_peer_id:flags.1?InputPeer quote_text:flags.2?string quote_entities:flags.3?Vector<MessageEntity> quote_offset:flags.4?int monoforum_peer_id:flags.5?InputPeer todo_item_id:flags.6?int = InputReplyTo;
|
||||
inputReplyToStory#5881323a peer:InputPeer story_id:int = InputReplyTo;
|
||||
inputReplyToMonoForum#69d66c45 monoforum_peer_id:InputPeer = InputReplyTo;
|
||||
|
||||
|
|
@ -1677,7 +1710,7 @@ messages.webPage#fd5e12bd webpage:WebPage chats:Vector<Chat> users:Vector<User>
|
|||
|
||||
premiumGiftCodeOption#257e962b flags:# users:int months:int store_product:flags.0?string store_quantity:flags.1?int currency:string amount:long = PremiumGiftCodeOption;
|
||||
|
||||
payments.checkedGiftCode#284a1096 flags:# via_giveaway:flags.2?true from_id:flags.4?Peer giveaway_msg_id:flags.3?int to_id:flags.0?long date:int months:int used_date:flags.1?int chats:Vector<Chat> users:Vector<User> = payments.CheckedGiftCode;
|
||||
payments.checkedGiftCode#eb983f8f flags:# via_giveaway:flags.2?true from_id:flags.4?Peer giveaway_msg_id:flags.3?int to_id:flags.0?long date:int days:int used_date:flags.1?int chats:Vector<Chat> users:Vector<User> = payments.CheckedGiftCode;
|
||||
|
||||
payments.giveawayInfo#4367daa0 flags:# participating:flags.0?true preparing_results:flags.3?true start_date:int joined_too_early_date:flags.1?int admin_disallowed_chat_id:flags.2?long disallowed_country:flags.4?string = payments.GiveawayInfo;
|
||||
payments.giveawayInfoResults#e175e66f flags:# winner:flags.0?true refunded:flags.1?true start_date:int gift_code_slug:flags.3?string stars_prize:flags.4?long finish_date:int winners_count:int activated_count:flags.2?int = payments.GiveawayInfo;
|
||||
|
|
@ -1708,6 +1741,8 @@ publicForwardStory#edf3add0 peer:Peer story:StoryItem = PublicForward;
|
|||
stats.publicForwards#93037e20 flags:# count:int forwards:Vector<PublicForward> next_offset:flags.0?string chats:Vector<Chat> users:Vector<User> = stats.PublicForwards;
|
||||
|
||||
peerColor#b54b5acf flags:# color:flags.0?int background_emoji_id:flags.1?long = PeerColor;
|
||||
peerColorCollectible#b9c0639a flags:# collectible_id:long gift_emoji_id:long background_emoji_id:long accent_color:int colors:Vector<int> dark_accent_color:flags.0?int dark_colors:flags.1?Vector<int> = PeerColor;
|
||||
inputPeerColorCollectible#b8ea86a9 collectible_id:long = PeerColor;
|
||||
|
||||
help.peerColorSet#26219a58 colors:Vector<int> = help.PeerColorSet;
|
||||
help.peerColorProfileSet#767d61eb palette_colors:Vector<int> bg_colors:Vector<int> story_colors:Vector<int> = help.PeerColorSet;
|
||||
|
|
@ -1724,7 +1759,7 @@ storyReactionPublicRepost#cfcd0f13 peer_id:Peer story:StoryItem = StoryReaction;
|
|||
stories.storyReactionsList#aa5f789c flags:# count:int reactions:Vector<StoryReaction> chats:Vector<Chat> users:Vector<User> next_offset:flags.0?string = stories.StoryReactionsList;
|
||||
|
||||
savedDialog#bd87cb6c flags:# pinned:flags.2?true peer:Peer top_message:int = SavedDialog;
|
||||
monoForumDialog#64407ea7 flags:# unread_mark:flags.3?true peer:Peer top_message:int read_inbox_max_id:int read_outbox_max_id:int unread_count:int unread_reactions_count:int draft:flags.1?DraftMessage = SavedDialog;
|
||||
monoForumDialog#64407ea7 flags:# unread_mark:flags.3?true nopaid_messages_exception:flags.4?true peer:Peer top_message:int read_inbox_max_id:int read_outbox_max_id:int unread_count:int unread_reactions_count:int draft:flags.1?DraftMessage = SavedDialog;
|
||||
|
||||
messages.savedDialogs#f83ae221 dialogs:Vector<SavedDialog> messages:Vector<Message> chats:Vector<Chat> users:Vector<User> = messages.SavedDialogs;
|
||||
messages.savedDialogsSlice#44ba9dd9 count:int dialogs:Vector<SavedDialog> messages:Vector<Message> chats:Vector<Chat> users:Vector<User> = messages.SavedDialogs;
|
||||
|
|
@ -1829,23 +1864,11 @@ channels.sponsoredMessageReportResultChooseOption#846f9e42 title:string options:
|
|||
channels.sponsoredMessageReportResultAdsHidden#3e3bcf2f = channels.SponsoredMessageReportResult;
|
||||
channels.sponsoredMessageReportResultReported#ad798849 = channels.SponsoredMessageReportResult;
|
||||
|
||||
stats.broadcastRevenueStats#5407e297 top_hours_graph:StatsGraph revenue_graph:StatsGraph balances:BroadcastRevenueBalances usd_rate:double = stats.BroadcastRevenueStats;
|
||||
|
||||
stats.broadcastRevenueWithdrawalUrl#ec659737 url:string = stats.BroadcastRevenueWithdrawalUrl;
|
||||
|
||||
broadcastRevenueTransactionProceeds#557e2cc4 amount:long from_date:int to_date:int = BroadcastRevenueTransaction;
|
||||
broadcastRevenueTransactionWithdrawal#5a590978 flags:# pending:flags.0?true failed:flags.2?true amount:long date:int provider:string transaction_date:flags.1?int transaction_url:flags.1?string = BroadcastRevenueTransaction;
|
||||
broadcastRevenueTransactionRefund#42d30d2e amount:long date:int provider:string = BroadcastRevenueTransaction;
|
||||
|
||||
stats.broadcastRevenueTransactions#87158466 count:int transactions:Vector<BroadcastRevenueTransaction> = stats.BroadcastRevenueTransactions;
|
||||
|
||||
reactionNotificationsFromContacts#bac3a61a = ReactionNotificationsFrom;
|
||||
reactionNotificationsFromAll#4b9e22a0 = ReactionNotificationsFrom;
|
||||
|
||||
reactionsNotifySettings#56e34970 flags:# messages_notify_from:flags.0?ReactionNotificationsFrom stories_notify_from:flags.1?ReactionNotificationsFrom sound:NotificationSound show_previews:Bool = ReactionsNotifySettings;
|
||||
|
||||
broadcastRevenueBalances#c3ff71e7 flags:# withdrawal_enabled:flags.0?true current_balance:long available_balance:long overall_revenue:long = BroadcastRevenueBalances;
|
||||
|
||||
availableEffect#93c3e27e flags:# premium_required:flags.2?true id:long emoticon:string static_icon_id:flags.0?long effect_sticker_id:long effect_animation_id:flags.1?long = AvailableEffect;
|
||||
|
||||
messages.availableEffectsNotModified#d1ed9a5b = messages.AvailableEffects;
|
||||
|
|
@ -1864,7 +1887,7 @@ starsTransactionPeerAPI#f9677aad = StarsTransactionPeer;
|
|||
|
||||
starsTopupOption#bd915c0 flags:# extended:flags.1?true stars:long store_product:flags.0?string currency:string amount:long = StarsTopupOption;
|
||||
|
||||
starsTransaction#a39fd94a flags:# refund:flags.3?true pending:flags.4?true failed:flags.6?true gift:flags.10?true reaction:flags.11?true stargift_upgrade:flags.18?true business_transfer:flags.21?true stargift_resale:flags.22?true id:string stars:StarsAmount date:int peer:StarsTransactionPeer title:flags.0?string description:flags.1?string photo:flags.2?WebDocument transaction_date:flags.5?int transaction_url:flags.5?string bot_payload:flags.7?bytes msg_id:flags.8?int extended_media:flags.9?Vector<MessageMedia> subscription_period:flags.12?int giveaway_post_id:flags.13?int stargift:flags.14?StarGift floodskip_number:flags.15?int starref_commission_permille:flags.16?int starref_peer:flags.17?Peer starref_amount:flags.17?StarsAmount paid_messages:flags.19?int premium_gift_months:flags.20?int = StarsTransaction;
|
||||
starsTransaction#13659eb0 flags:# refund:flags.3?true pending:flags.4?true failed:flags.6?true gift:flags.10?true reaction:flags.11?true stargift_upgrade:flags.18?true business_transfer:flags.21?true stargift_resale:flags.22?true posts_search:flags.24?true stargift_prepaid_upgrade:flags.25?true stargift_drop_original_details:flags.26?true phonegroup_message:flags.27?true stargift_auction_bid:flags.28?true offer:flags.29?true id:string amount:StarsAmount date:int peer:StarsTransactionPeer title:flags.0?string description:flags.1?string photo:flags.2?WebDocument transaction_date:flags.5?int transaction_url:flags.5?string bot_payload:flags.7?bytes msg_id:flags.8?int extended_media:flags.9?Vector<MessageMedia> subscription_period:flags.12?int giveaway_post_id:flags.13?int stargift:flags.14?StarGift floodskip_number:flags.15?int starref_commission_permille:flags.16?int starref_peer:flags.17?Peer starref_amount:flags.17?StarsAmount paid_messages:flags.19?int premium_gift_months:flags.20?int ads_proceeds_from_date:flags.23?int ads_proceeds_to_date:flags.23?int = StarsTransaction;
|
||||
|
||||
payments.starsStatus#6c9ce8ed flags:# balance:StarsAmount subscriptions:flags.1?Vector<StarsSubscription> subscriptions_next_offset:flags.2?string subscriptions_missing_balance:flags.4?long history:flags.3?Vector<StarsTransaction> next_offset:flags.0?string chats:Vector<Chat> users:Vector<User> = payments.StarsStatus;
|
||||
|
||||
|
|
@ -1876,7 +1899,7 @@ geoPointAddress#de4c5d93 flags:# country_iso2:string state:flags.0?string city:f
|
|||
|
||||
starsRevenueStatus#febe5491 flags:# withdrawal_enabled:flags.0?true current_balance:StarsAmount available_balance:StarsAmount overall_revenue:StarsAmount next_withdrawal_at:flags.1?int = StarsRevenueStatus;
|
||||
|
||||
payments.starsRevenueStats#c92bb73b revenue_graph:StatsGraph status:StarsRevenueStatus usd_rate:double = payments.StarsRevenueStats;
|
||||
payments.starsRevenueStats#6c207376 flags:# top_hours_graph:flags.0?StatsGraph revenue_graph:StatsGraph status:StarsRevenueStatus usd_rate:double = payments.StarsRevenueStats;
|
||||
|
||||
payments.starsRevenueWithdrawalUrl#1dab80b7 url:string = payments.StarsRevenueWithdrawalUrl;
|
||||
|
||||
|
|
@ -1902,11 +1925,11 @@ starsGiveawayOption#94ce852a flags:# extended:flags.0?true default:flags.1?true
|
|||
|
||||
starsGiveawayWinnersOption#54236209 flags:# default:flags.0?true users:int per_user_stars:long = StarsGiveawayWinnersOption;
|
||||
|
||||
starGift#c62aca28 flags:# limited:flags.0?true sold_out:flags.1?true birthday:flags.2?true id:long sticker:Document stars:long availability_remains:flags.0?int availability_total:flags.0?int availability_resale:flags.4?long convert_stars:long first_sale_date:flags.1?int last_sale_date:flags.1?int upgrade_stars:flags.3?long resell_min_stars:flags.4?long title:flags.5?string = StarGift;
|
||||
starGiftUnique#6411db89 flags:# id:long title:string slug:string num:int owner_id:flags.0?Peer owner_name:flags.1?string owner_address:flags.2?string attributes:Vector<StarGiftAttribute> availability_issued:int availability_total:int gift_address:flags.3?string resell_stars:flags.4?long = StarGift;
|
||||
starGift#313a9547 flags:# limited:flags.0?true sold_out:flags.1?true birthday:flags.2?true require_premium:flags.7?true limited_per_user:flags.8?true peer_color_available:flags.10?true auction:flags.11?true id:long sticker:Document stars:long availability_remains:flags.0?int availability_total:flags.0?int availability_resale:flags.4?long convert_stars:long first_sale_date:flags.1?int last_sale_date:flags.1?int upgrade_stars:flags.3?long resell_min_stars:flags.4?long title:flags.5?string released_by:flags.6?Peer per_user_total:flags.8?int per_user_remains:flags.8?int locked_until_date:flags.9?int auction_slug:flags.11?string gifts_per_round:flags.11?int auction_start_date:flags.11?int upgrade_variants:flags.12?int background:flags.13?StarGiftBackground = StarGift;
|
||||
starGiftUnique#569d64c9 flags:# require_premium:flags.6?true resale_ton_only:flags.7?true theme_available:flags.9?true id:long gift_id:long title:string slug:string num:int owner_id:flags.0?Peer owner_name:flags.1?string owner_address:flags.2?string attributes:Vector<StarGiftAttribute> availability_issued:int availability_total:int gift_address:flags.3?string resell_amount:flags.4?Vector<StarsAmount> released_by:flags.5?Peer value_amount:flags.8?long value_currency:flags.8?string value_usd_amount:flags.8?long theme_peer:flags.10?Peer peer_color:flags.11?PeerColor host_id:flags.12?Peer offer_min_stars:flags.13?int = StarGift;
|
||||
|
||||
payments.starGiftsNotModified#a388a368 = payments.StarGifts;
|
||||
payments.starGifts#901689ea hash:int gifts:Vector<StarGift> = payments.StarGifts;
|
||||
payments.starGifts#2ed82995 hash:int gifts:Vector<StarGift> chats:Vector<Chat> users:Vector<User> = payments.StarGifts;
|
||||
|
||||
messageReportOption#7903e3d9 text:string option:bytes = MessageReportOption;
|
||||
|
||||
|
|
@ -1929,6 +1952,7 @@ payments.connectedStarRefBots#98d5ea1d count:int connected_bots:Vector<Connected
|
|||
payments.suggestedStarRefBots#b4d5d859 flags:# count:int suggested_bots:Vector<StarRefProgram> users:Vector<User> next_offset:flags.0?string = payments.SuggestedStarRefBots;
|
||||
|
||||
starsAmount#bbb6b4a3 amount:long nanos:int = StarsAmount;
|
||||
starsTonAmount#74aee3e0 amount:long = StarsAmount;
|
||||
|
||||
messages.foundStickersNotModified#6010c534 flags:# next_offset:flags.0?int = messages.FoundStickers;
|
||||
messages.foundStickers#82c9e290 flags:# next_offset:flags.0?int hash:long stickers:Vector<Document> = messages.FoundStickers;
|
||||
|
|
@ -1942,16 +1966,16 @@ starGiftAttributePattern#13acff19 name:string document:Document rarity_permille:
|
|||
starGiftAttributeBackdrop#d93d859c name:string backdrop_id:int center_color:int edge_color:int pattern_color:int text_color:int rarity_permille:int = StarGiftAttribute;
|
||||
starGiftAttributeOriginalDetails#e0bff26c flags:# sender_id:flags.0?Peer recipient_id:Peer date:int message:flags.1?TextWithEntities = StarGiftAttribute;
|
||||
|
||||
payments.starGiftUpgradePreview#167bd90b sample_attributes:Vector<StarGiftAttribute> = payments.StarGiftUpgradePreview;
|
||||
payments.starGiftUpgradePreview#3de1dfed sample_attributes:Vector<StarGiftAttribute> prices:Vector<StarGiftUpgradePrice> next_prices:Vector<StarGiftUpgradePrice> = payments.StarGiftUpgradePreview;
|
||||
|
||||
users.users#62d706b8 users:Vector<User> = users.Users;
|
||||
users.usersSlice#315a4974 count:int users:Vector<User> = users.Users;
|
||||
|
||||
payments.uniqueStarGift#caa2f60b gift:StarGift users:Vector<User> = payments.UniqueStarGift;
|
||||
payments.uniqueStarGift#416c56e8 gift:StarGift chats:Vector<Chat> users:Vector<User> = payments.UniqueStarGift;
|
||||
|
||||
messages.webPagePreview#b53e8b21 media:MessageMedia users:Vector<User> = messages.WebPagePreview;
|
||||
messages.webPagePreview#8c9a88ac media:MessageMedia chats:Vector<Chat> users:Vector<User> = messages.WebPagePreview;
|
||||
|
||||
savedStarGift#dfda0499 flags:# name_hidden:flags.0?true unsaved:flags.5?true refunded:flags.9?true can_upgrade:flags.10?true pinned_to_top:flags.12?true from_id:flags.1?Peer date:int gift:StarGift message:flags.2?TextWithEntities msg_id:flags.3?int saved_id:flags.11?long convert_stars:flags.4?long upgrade_stars:flags.6?long can_export_at:flags.7?int transfer_stars:flags.8?long can_transfer_at:flags.13?int can_resell_at:flags.14?int = SavedStarGift;
|
||||
savedStarGift#ead6805e flags:# name_hidden:flags.0?true unsaved:flags.5?true refunded:flags.9?true can_upgrade:flags.10?true pinned_to_top:flags.12?true upgrade_separate:flags.17?true from_id:flags.1?Peer date:int gift:StarGift message:flags.2?TextWithEntities msg_id:flags.3?int saved_id:flags.11?long convert_stars:flags.4?long upgrade_stars:flags.6?long can_export_at:flags.7?int transfer_stars:flags.8?long can_transfer_at:flags.13?int can_resell_at:flags.14?int collection_id:flags.15?Vector<int> prepaid_upgrade_hash:flags.16?string drop_original_details_stars:flags.18?long gift_num:flags.19?int = SavedStarGift;
|
||||
|
||||
payments.savedStarGifts#95f389b1 flags:# count:int chat_notifications_enabled:flags.1?Bool gifts:Vector<SavedStarGift> next_offset:flags.0?string chats:Vector<Chat> users:Vector<User> = payments.SavedStarGifts;
|
||||
|
||||
|
|
@ -1973,7 +1997,7 @@ requirementToContactPaidMessages#b4f67e93 stars_amount:long = RequirementToConta
|
|||
|
||||
businessBotRights#a0624cf7 flags:# reply:flags.0?true read_messages:flags.1?true delete_sent_messages:flags.2?true delete_received_messages:flags.3?true edit_name:flags.4?true edit_bio:flags.5?true edit_profile_photo:flags.6?true edit_username:flags.7?true view_gifts:flags.8?true sell_gifts:flags.9?true change_gift_settings:flags.10?true transfer_and_upgrade_gifts:flags.11?true transfer_stars:flags.12?true manage_stories:flags.13?true = BusinessBotRights;
|
||||
|
||||
disallowedGiftsSettings#71f276c4 flags:# disallow_unlimited_stargifts:flags.0?true disallow_limited_stargifts:flags.1?true disallow_unique_stargifts:flags.2?true disallow_premium_gifts:flags.3?true = DisallowedGiftsSettings;
|
||||
disallowedGiftsSettings#71f276c4 flags:# disallow_unlimited_stargifts:flags.0?true disallow_limited_stargifts:flags.1?true disallow_unique_stargifts:flags.2?true disallow_premium_gifts:flags.3?true disallow_stargifts_from_channels:flags.4?true = DisallowedGiftsSettings;
|
||||
|
||||
sponsoredPeer#c69708d3 flags:# random_id:bytes peer:Peer sponsor_info:flags.0?string additional_info:flags.1?string = SponsoredPeer;
|
||||
|
||||
|
|
@ -1992,6 +2016,102 @@ stories.canSendStoryCount#c387c04e count_remains:int = stories.CanSendStoryCount
|
|||
|
||||
pendingSuggestion#e7e82e12 suggestion:string title:TextWithEntities description:TextWithEntities url:string = PendingSuggestion;
|
||||
|
||||
todoItem#cba9a52f id:int title:TextWithEntities = TodoItem;
|
||||
|
||||
todoList#49b92a26 flags:# others_can_append:flags.0?true others_can_complete:flags.1?true title:TextWithEntities list:Vector<TodoItem> = TodoList;
|
||||
|
||||
todoCompletion#221bb5e4 id:int completed_by:Peer date:int = TodoCompletion;
|
||||
|
||||
suggestedPost#e8e37e5 flags:# accepted:flags.1?true rejected:flags.2?true price:flags.3?StarsAmount schedule_date:flags.0?int = SuggestedPost;
|
||||
|
||||
starsRating#1b0e4f07 flags:# level:int current_level_stars:long stars:long next_level_stars:flags.0?long = StarsRating;
|
||||
starGiftCollection#9d6b13b0 flags:# collection_id:int title:string icon:flags.0?Document gifts_count:int hash:long = StarGiftCollection;
|
||||
payments.starGiftCollectionsNotModified#a0ba4f17 = payments.StarGiftCollections;
|
||||
payments.starGiftCollections#8a2932f3 collections:Vector<StarGiftCollection> = payments.StarGiftCollections;
|
||||
|
||||
storyAlbum#9325705a flags:# album_id:int title:string icon_photo:flags.0?Photo icon_video:flags.1?Document = StoryAlbum;
|
||||
|
||||
stories.albumsNotModified#564edaeb = stories.Albums;
|
||||
stories.albums#c3987a3a hash:long albums:Vector<StoryAlbum> = stories.Albums;
|
||||
|
||||
searchPostsFlood#3e0b5b6a flags:# query_is_free:flags.0?true total_daily:int remains:int wait_till:flags.1?int stars_amount:long = SearchPostsFlood;
|
||||
|
||||
payments.uniqueStarGiftValueInfo#512fe446 flags:# last_sale_on_fragment:flags.1?true value_is_average:flags.6?true currency:string value:long initial_sale_date:int initial_sale_stars:long initial_sale_price:long last_sale_date:flags.0?int last_sale_price:flags.0?long floor_price:flags.2?long average_price:flags.3?long listed_count:flags.4?int fragment_listed_count:flags.5?int fragment_listed_url:flags.5?string = payments.UniqueStarGiftValueInfo;
|
||||
|
||||
profileTabPosts#b98cd696 = ProfileTab;
|
||||
profileTabGifts#4d4bd46a = ProfileTab;
|
||||
profileTabMedia#72c64955 = ProfileTab;
|
||||
profileTabFiles#ab339c00 = ProfileTab;
|
||||
profileTabMusic#9f27d26e = ProfileTab;
|
||||
profileTabVoice#e477092e = ProfileTab;
|
||||
profileTabLinks#d3656499 = ProfileTab;
|
||||
profileTabGifs#a2c0f695 = ProfileTab;
|
||||
|
||||
users.savedMusicNotModified#e3878aa4 count:int = users.SavedMusic;
|
||||
users.savedMusic#34a2f297 count:int documents:Vector<Document> = users.SavedMusic;
|
||||
|
||||
account.savedMusicIdsNotModified#4fc81d6e = account.SavedMusicIds;
|
||||
account.savedMusicIds#998d6636 ids:Vector<long> = account.SavedMusicIds;
|
||||
|
||||
payments.checkCanSendGiftResultOk#374fa7ad = payments.CheckCanSendGiftResult;
|
||||
payments.checkCanSendGiftResultFail#d5e58274 reason:TextWithEntities = payments.CheckCanSendGiftResult;
|
||||
|
||||
inputChatThemeEmpty#83268483 = InputChatTheme;
|
||||
inputChatTheme#c93de95c emoticon:string = InputChatTheme;
|
||||
inputChatThemeUniqueGift#87e5dfe4 slug:string = InputChatTheme;
|
||||
|
||||
starGiftUpgradePrice#99ea331d date:int upgrade_stars:long = StarGiftUpgradePrice;
|
||||
|
||||
groupCallMessage#1a8afc7e flags:# from_admin:flags.1?true id:int from_id:Peer date:int message:TextWithEntities paid_message_stars:flags.0?long = GroupCallMessage;
|
||||
|
||||
groupCallDonor#ee430c85 flags:# top:flags.0?true my:flags.1?true peer_id:flags.3?Peer stars:long = GroupCallDonor;
|
||||
|
||||
phone.groupCallStars#9d1dbd26 total_stars:long top_donors:Vector<GroupCallDonor> chats:Vector<Chat> users:Vector<User> = phone.GroupCallStars;
|
||||
|
||||
recentStory#711d692d flags:# live:flags.0?true max_id:flags.1?int = RecentStory;
|
||||
|
||||
auctionBidLevel#310240cc pos:int amount:long date:int = AuctionBidLevel;
|
||||
|
||||
starGiftAuctionStateNotModified#fe333952 = StarGiftAuctionState;
|
||||
starGiftAuctionState#771a4e66 version:int start_date:int end_date:int min_bid_amount:long bid_levels:Vector<AuctionBidLevel> top_bidders:Vector<long> next_round_at:int last_gift_num:int gifts_left:int current_round:int total_rounds:int rounds:Vector<StarGiftAuctionRound> = StarGiftAuctionState;
|
||||
starGiftAuctionStateFinished#972dabbf flags:# start_date:int end_date:int average_price:long listed_count:flags.0?int fragment_listed_count:flags.1?int fragment_listed_url:flags.1?string = StarGiftAuctionState;
|
||||
|
||||
starGiftAuctionUserState#2eeed1c4 flags:# returned:flags.1?true bid_amount:flags.0?long bid_date:flags.0?int min_bid_amount:flags.0?long bid_peer:flags.0?Peer acquired_count:int = StarGiftAuctionUserState;
|
||||
|
||||
payments.starGiftAuctionState#6b39f4ec gift:StarGift state:StarGiftAuctionState user_state:StarGiftAuctionUserState timeout:int users:Vector<User> chats:Vector<Chat> = payments.StarGiftAuctionState;
|
||||
|
||||
starGiftAuctionAcquiredGift#42b00348 flags:# name_hidden:flags.0?true peer:Peer date:int bid_amount:long round:int pos:int message:flags.1?TextWithEntities gift_num:flags.2?int = StarGiftAuctionAcquiredGift;
|
||||
|
||||
payments.starGiftAuctionAcquiredGifts#7d5bd1f0 gifts:Vector<StarGiftAuctionAcquiredGift> users:Vector<User> chats:Vector<Chat> = payments.StarGiftAuctionAcquiredGifts;
|
||||
|
||||
starGiftActiveAuctionState#d31bc45d gift:StarGift state:StarGiftAuctionState user_state:StarGiftAuctionUserState = StarGiftActiveAuctionState;
|
||||
|
||||
payments.starGiftActiveAuctionsNotModified#db33dad0 = payments.StarGiftActiveAuctions;
|
||||
payments.starGiftActiveAuctions#aef6abbc auctions:Vector<StarGiftActiveAuctionState> users:Vector<User> chats:Vector<Chat> = payments.StarGiftActiveAuctions;
|
||||
|
||||
inputStarGiftAuction#2e16c98 gift_id:long = InputStarGiftAuction;
|
||||
inputStarGiftAuctionSlug#7ab58308 slug:string = InputStarGiftAuction;
|
||||
|
||||
passkey#98613ebf flags:# id:string name:string date:int software_emoji_id:flags.0?long last_usage_date:flags.1?int = Passkey;
|
||||
|
||||
account.passkeys#f8e0aa1c passkeys:Vector<Passkey> = account.Passkeys;
|
||||
|
||||
account.passkeyRegistrationOptions#e16b5ce1 options:DataJSON = account.PasskeyRegistrationOptions;
|
||||
|
||||
auth.passkeyLoginOptions#e2037789 options:DataJSON = auth.PasskeyLoginOptions;
|
||||
|
||||
inputPasskeyResponseRegister#3e63935c client_data:DataJSON attestation_data:bytes = InputPasskeyResponse;
|
||||
inputPasskeyResponseLogin#c31fc14a client_data:DataJSON authenticator_data:bytes signature:bytes user_handle:string = InputPasskeyResponse;
|
||||
|
||||
inputPasskeyCredentialPublicKey#3c27b78f id:string raw_id:string response:InputPasskeyResponse = InputPasskeyCredential;
|
||||
|
||||
starGiftBackground#aff56398 center_color:int edge_color:int text_color:int = StarGiftBackground;
|
||||
|
||||
starGiftAuctionRound#3aae0528 num:int duration:int = StarGiftAuctionRound;
|
||||
starGiftAuctionRoundExtendable#aa021e5 num:int duration:int extend_top:int extend_window:int = StarGiftAuctionRound;
|
||||
|
||||
payments.starGiftUpgradeAttributes#46c6e36f attributes:Vector<StarGiftAttribute> = payments.StarGiftUpgradeAttributes;
|
||||
|
||||
---functions---
|
||||
|
||||
invokeAfterMsg#cb9f372d {X:Type} msg_id:long query:!X = X;
|
||||
|
|
@ -2029,6 +2149,9 @@ auth.importWebTokenAuthorization#2db873a9 api_id:int api_hash:string web_auth_to
|
|||
auth.requestFirebaseSms#8e39261e flags:# phone_number:string phone_code_hash:string safety_net_token:flags.0?string play_integrity_token:flags.2?string ios_push_secret:flags.1?string = Bool;
|
||||
auth.resetLoginEmail#7e960193 phone_number:string phone_code_hash:string = auth.SentCode;
|
||||
auth.reportMissingCode#cb9deff6 phone_number:string phone_code_hash:string mnc:string = Bool;
|
||||
auth.checkPaidAuth#56e59f9c phone_number:string phone_code_hash:string form_id:long = auth.SentCode;
|
||||
auth.initPasskeyLogin#518ad0b7 api_id:int api_hash:string = auth.PasskeyLoginOptions;
|
||||
auth.finishPasskeyLogin#9857ad07 flags:# credential:InputPasskeyCredential from_dc_id:flags.0?int from_auth_key_id:flags.0?long = auth.Authorization;
|
||||
|
||||
account.registerDevice#ec86017a flags:# no_muted:flags.0?true token_type:int token:string app_sandbox:Bool secret:bytes other_uids:Vector<long> = Bool;
|
||||
account.unregisterDevice#6a0d3206 token_type:int token:string other_uids:Vector<long> = Bool;
|
||||
|
|
@ -2118,7 +2241,7 @@ account.getAutoSaveSettings#adcbbcda = account.AutoSaveSettings;
|
|||
account.saveAutoSaveSettings#d69b8361 flags:# users:flags.0?true chats:flags.1?true broadcasts:flags.2?true peer:flags.3?InputPeer settings:AutoSaveSettings = Bool;
|
||||
account.deleteAutoSaveExceptions#53bc0020 = Bool;
|
||||
account.invalidateSignInCodes#ca8ae8ba codes:Vector<string> = Bool;
|
||||
account.updateColor#7cefa15d flags:# for_profile:flags.1?true color:flags.2?int background_emoji_id:flags.0?long = Bool;
|
||||
account.updateColor#684d214e flags:# for_profile:flags.1?true color:flags.2?PeerColor = Bool;
|
||||
account.getDefaultBackgroundEmojis#a60ab9ce hash:long = EmojiList;
|
||||
account.getChannelDefaultEmojiStatuses#7727a7d5 hash:long = account.EmojiStatuses;
|
||||
account.getChannelRestrictedStatusEmojis#35a9e0d5 hash:long = EmojiList;
|
||||
|
|
@ -2143,13 +2266,24 @@ account.toggleSponsoredMessages#b9d9a38d enabled:Bool = Bool;
|
|||
account.getReactionsNotifySettings#6dd654c = ReactionsNotifySettings;
|
||||
account.setReactionsNotifySettings#316ce548 settings:ReactionsNotifySettings = ReactionsNotifySettings;
|
||||
account.getCollectibleEmojiStatuses#2e7b4543 hash:long = account.EmojiStatuses;
|
||||
account.addNoPaidMessagesException#6f688aa7 flags:# refund_charged:flags.0?true user_id:InputUser = Bool;
|
||||
account.getPaidMessagesRevenue#f1266f38 user_id:InputUser = account.PaidMessagesRevenue;
|
||||
account.getPaidMessagesRevenue#19ba4a67 flags:# parent_peer:flags.0?InputPeer user_id:InputUser = account.PaidMessagesRevenue;
|
||||
account.toggleNoPaidMessagesException#fe2eda76 flags:# refund_charged:flags.0?true require_payment:flags.2?true parent_peer:flags.1?InputPeer user_id:InputUser = Bool;
|
||||
account.setMainProfileTab#5dee78b0 tab:ProfileTab = Bool;
|
||||
account.saveMusic#b26732a9 flags:# unsave:flags.0?true id:InputDocument after_id:flags.1?InputDocument = Bool;
|
||||
account.getSavedMusicIds#e09d5faf hash:long = account.SavedMusicIds;
|
||||
account.getUniqueGiftChatThemes#e42ce9c9 offset:string limit:int hash:long = account.ChatThemes;
|
||||
account.initPasskeyRegistration#429547e8 = account.PasskeyRegistrationOptions;
|
||||
account.registerPasskey#55b41fd6 credential:InputPasskeyCredential = Passkey;
|
||||
account.getPasskeys#ea1f0c52 = account.Passkeys;
|
||||
account.deletePasskey#f5b5563f id:string = Bool;
|
||||
|
||||
users.getUsers#d91a548 id:Vector<InputUser> = Vector<User>;
|
||||
users.getFullUser#b60f5918 id:InputUser = users.UserFull;
|
||||
users.setSecureValueErrors#90c894b5 id:InputUser errors:Vector<SecureValueError> = Bool;
|
||||
users.getRequirementsToContact#d89a83a3 id:Vector<InputUser> = Vector<RequirementToContact>;
|
||||
users.getSavedMusic#788d7fe3 id:InputUser offset:int limit:int hash:long = users.SavedMusic;
|
||||
users.getSavedMusicByID#7573a4e9 id:InputUser documents:Vector<InputDocument> = users.SavedMusic;
|
||||
users.suggestBirthday#fc533372 id:InputUser birthday:Birthday = Updates;
|
||||
|
||||
contacts.getContactIDs#7adc669d hash:long = Vector<int>;
|
||||
contacts.getStatuses#c4a353ee = Vector<ContactStatus>;
|
||||
|
|
@ -2167,7 +2301,7 @@ contacts.resetTopPeerRating#1ae373ac category:TopPeerCategory peer:InputPeer = B
|
|||
contacts.resetSaved#879537f1 = Bool;
|
||||
contacts.getSaved#82f1e39f = Vector<SavedContact>;
|
||||
contacts.toggleTopPeers#8514bdda enabled:Bool = Bool;
|
||||
contacts.addContact#e8f463d0 flags:# add_phone_privacy_exception:flags.0?true id:InputUser first_name:string last_name:string phone:string = Updates;
|
||||
contacts.addContact#d9ba2e54 flags:# add_phone_privacy_exception:flags.0?true id:InputUser first_name:string last_name:string phone:string note:flags.1?TextWithEntities = Updates;
|
||||
contacts.acceptContact#f831a20f id:InputUser = Updates;
|
||||
contacts.getLocated#d348bc44 flags:# background:flags.1?true geo_point:InputGeoPoint self_expires:flags.0?int = Updates;
|
||||
contacts.blockFromReplies#29a8962c flags:# delete_message:flags.0?true delete_history:flags.1?true report_spam:flags.2?true msg_id:int = Updates;
|
||||
|
|
@ -2178,6 +2312,7 @@ contacts.editCloseFriends#ba6705f0 id:Vector<long> = Bool;
|
|||
contacts.setBlocked#94c65c76 flags:# my_stories_from:flags.0?true id:Vector<InputPeer> limit:int = Bool;
|
||||
contacts.getBirthdays#daeda864 = contacts.ContactBirthdays;
|
||||
contacts.getSponsoredPeers#b6c8c393 q:string = contacts.SponsoredPeers;
|
||||
contacts.updateContactNote#139f63fb id:InputUser note:TextWithEntities = Bool;
|
||||
|
||||
messages.getMessages#63c66506 id:Vector<InputMessage> = messages.Messages;
|
||||
messages.getDialogs#a0f4cb4f flags:# exclude_pinned:flags.0?true folder_id:flags.1?int offset_date:int offset_id:int offset_peer:InputPeer limit:int hash:long = messages.Dialogs;
|
||||
|
|
@ -2188,9 +2323,9 @@ messages.deleteHistory#b08f922a flags:# just_clear:flags.0?true revoke:flags.1?t
|
|||
messages.deleteMessages#e58e95d2 flags:# revoke:flags.0?true id:Vector<int> = messages.AffectedMessages;
|
||||
messages.receivedMessages#5a954c0 max_id:int = Vector<ReceivedNotifyMessage>;
|
||||
messages.setTyping#58943ee2 flags:# peer:InputPeer top_msg_id:flags.0?int action:SendMessageAction = Bool;
|
||||
messages.sendMessage#fbf2340a flags:# no_webpage:flags.1?true silent:flags.5?true background:flags.6?true clear_draft:flags.7?true noforwards:flags.14?true update_stickersets_order:flags.15?true invert_media:flags.16?true allow_paid_floodskip:flags.19?true peer:InputPeer reply_to:flags.0?InputReplyTo message:string random_id:long reply_markup:flags.2?ReplyMarkup entities:flags.3?Vector<MessageEntity> schedule_date:flags.10?int send_as:flags.13?InputPeer quick_reply_shortcut:flags.17?InputQuickReplyShortcut effect:flags.18?long allow_paid_stars:flags.21?long = Updates;
|
||||
messages.sendMedia#a550cd78 flags:# silent:flags.5?true background:flags.6?true clear_draft:flags.7?true noforwards:flags.14?true update_stickersets_order:flags.15?true invert_media:flags.16?true allow_paid_floodskip:flags.19?true peer:InputPeer reply_to:flags.0?InputReplyTo media:InputMedia message:string random_id:long reply_markup:flags.2?ReplyMarkup entities:flags.3?Vector<MessageEntity> schedule_date:flags.10?int send_as:flags.13?InputPeer quick_reply_shortcut:flags.17?InputQuickReplyShortcut effect:flags.18?long allow_paid_stars:flags.21?long = Updates;
|
||||
messages.forwardMessages#38f0188c flags:# silent:flags.5?true background:flags.6?true with_my_score:flags.8?true drop_author:flags.11?true drop_media_captions:flags.12?true noforwards:flags.14?true allow_paid_floodskip:flags.19?true from_peer:InputPeer id:Vector<int> random_id:Vector<long> to_peer:InputPeer top_msg_id:flags.9?int reply_to:flags.22?InputReplyTo schedule_date:flags.10?int send_as:flags.13?InputPeer quick_reply_shortcut:flags.17?InputQuickReplyShortcut video_timestamp:flags.20?int allow_paid_stars:flags.21?long = Updates;
|
||||
messages.sendMessage#545cd15a flags:# no_webpage:flags.1?true silent:flags.5?true background:flags.6?true clear_draft:flags.7?true noforwards:flags.14?true update_stickersets_order:flags.15?true invert_media:flags.16?true allow_paid_floodskip:flags.19?true peer:InputPeer reply_to:flags.0?InputReplyTo message:string random_id:long reply_markup:flags.2?ReplyMarkup entities:flags.3?Vector<MessageEntity> schedule_date:flags.10?int schedule_repeat_period:flags.24?int send_as:flags.13?InputPeer quick_reply_shortcut:flags.17?InputQuickReplyShortcut effect:flags.18?long allow_paid_stars:flags.21?long suggested_post:flags.22?SuggestedPost = Updates;
|
||||
messages.sendMedia#330e77f flags:# silent:flags.5?true background:flags.6?true clear_draft:flags.7?true noforwards:flags.14?true update_stickersets_order:flags.15?true invert_media:flags.16?true allow_paid_floodskip:flags.19?true peer:InputPeer reply_to:flags.0?InputReplyTo media:InputMedia message:string random_id:long reply_markup:flags.2?ReplyMarkup entities:flags.3?Vector<MessageEntity> schedule_date:flags.10?int schedule_repeat_period:flags.24?int send_as:flags.13?InputPeer quick_reply_shortcut:flags.17?InputQuickReplyShortcut effect:flags.18?long allow_paid_stars:flags.21?long suggested_post:flags.22?SuggestedPost = Updates;
|
||||
messages.forwardMessages#13704a7c flags:# silent:flags.5?true background:flags.6?true with_my_score:flags.8?true drop_author:flags.11?true drop_media_captions:flags.12?true noforwards:flags.14?true allow_paid_floodskip:flags.19?true from_peer:InputPeer id:Vector<int> random_id:Vector<long> to_peer:InputPeer top_msg_id:flags.9?int reply_to:flags.22?InputReplyTo schedule_date:flags.10?int schedule_repeat_period:flags.24?int send_as:flags.13?InputPeer quick_reply_shortcut:flags.17?InputQuickReplyShortcut effect:flags.18?long video_timestamp:flags.20?int allow_paid_stars:flags.21?long suggested_post:flags.23?SuggestedPost = Updates;
|
||||
messages.reportSpam#cf1592db peer:InputPeer = Bool;
|
||||
messages.getPeerSettings#efd9a6a2 peer:InputPeer = messages.PeerSettings;
|
||||
messages.report#fc78af9b peer:InputPeer id:Vector<int> option:bytes message:string = ReportResult;
|
||||
|
|
@ -2235,12 +2370,12 @@ messages.getInlineBotResults#514e999d flags:# bot:InputUser peer:InputPeer geo_p
|
|||
messages.setInlineBotResults#bb12a419 flags:# gallery:flags.0?true private:flags.1?true query_id:long results:Vector<InputBotInlineResult> cache_time:int next_offset:flags.2?string switch_pm:flags.3?InlineBotSwitchPM switch_webview:flags.4?InlineBotWebView = Bool;
|
||||
messages.sendInlineBotResult#c0cf7646 flags:# silent:flags.5?true background:flags.6?true clear_draft:flags.7?true hide_via:flags.11?true peer:InputPeer reply_to:flags.0?InputReplyTo random_id:long query_id:long id:string schedule_date:flags.10?int send_as:flags.13?InputPeer quick_reply_shortcut:flags.17?InputQuickReplyShortcut allow_paid_stars:flags.21?long = Updates;
|
||||
messages.getMessageEditData#fda68d36 peer:InputPeer id:int = messages.MessageEditData;
|
||||
messages.editMessage#dfd14005 flags:# no_webpage:flags.1?true invert_media:flags.16?true peer:InputPeer id:int message:flags.11?string media:flags.14?InputMedia reply_markup:flags.2?ReplyMarkup entities:flags.3?Vector<MessageEntity> schedule_date:flags.15?int quick_reply_shortcut_id:flags.17?int = Updates;
|
||||
messages.editMessage#51e842e1 flags:# no_webpage:flags.1?true invert_media:flags.16?true peer:InputPeer id:int message:flags.11?string media:flags.14?InputMedia reply_markup:flags.2?ReplyMarkup entities:flags.3?Vector<MessageEntity> schedule_date:flags.15?int schedule_repeat_period:flags.18?int quick_reply_shortcut_id:flags.17?int = Updates;
|
||||
messages.editInlineBotMessage#83557dba flags:# no_webpage:flags.1?true invert_media:flags.16?true id:InputBotInlineMessageID message:flags.11?string media:flags.14?InputMedia reply_markup:flags.2?ReplyMarkup entities:flags.3?Vector<MessageEntity> = Bool;
|
||||
messages.getBotCallbackAnswer#9342ca07 flags:# game:flags.1?true peer:InputPeer msg_id:int data:flags.0?bytes password:flags.2?InputCheckPasswordSRP = messages.BotCallbackAnswer;
|
||||
messages.setBotCallbackAnswer#d58f130a flags:# alert:flags.1?true query_id:long message:flags.0?string url:flags.2?string cache_time:int = Bool;
|
||||
messages.getPeerDialogs#e470bcfd peers:Vector<InputDialogPeer> = messages.PeerDialogs;
|
||||
messages.saveDraft#d372c5ce flags:# no_webpage:flags.1?true invert_media:flags.6?true reply_to:flags.4?InputReplyTo peer:InputPeer message:string entities:flags.3?Vector<MessageEntity> media:flags.5?InputMedia effect:flags.7?long = Bool;
|
||||
messages.saveDraft#54ae308e flags:# no_webpage:flags.1?true invert_media:flags.6?true reply_to:flags.4?InputReplyTo peer:InputPeer message:string entities:flags.3?Vector<MessageEntity> media:flags.5?InputMedia effect:flags.7?long suggested_post:flags.8?SuggestedPost = Bool;
|
||||
messages.getAllDrafts#6a3f8d65 = Updates;
|
||||
messages.getFeaturedStickers#64780b14 hash:long = messages.FeaturedStickers;
|
||||
messages.readFeaturedStickers#5b118126 id:Vector<long> = Bool;
|
||||
|
|
@ -2319,7 +2454,7 @@ messages.getAdminsWithInvites#3920e6ef peer:InputPeer = messages.ChatAdminsWithI
|
|||
messages.getChatInviteImporters#df04dd4e flags:# requested:flags.0?true subscription_expired:flags.3?true peer:InputPeer link:flags.1?string q:flags.2?string offset_date:int offset_user:InputUser limit:int = messages.ChatInviteImporters;
|
||||
messages.setHistoryTTL#b80e5fe4 peer:InputPeer period:int = Updates;
|
||||
messages.checkHistoryImportPeer#5dc60f03 peer:InputPeer = messages.CheckedHistoryImportPeer;
|
||||
messages.setChatTheme#e63be13f peer:InputPeer emoticon:string = Updates;
|
||||
messages.setChatTheme#81202c9 peer:InputPeer theme:InputChatTheme = Updates;
|
||||
messages.getMessageReadParticipants#31c1c44f peer:InputPeer msg_id:int = Vector<ReadParticipantDate>;
|
||||
messages.getSearchResultsCalendar#6aa3f6bd flags:# peer:InputPeer saved_peer_id:flags.2?InputPeer filter:MessagesFilter offset_id:int offset_date:int = messages.SearchResultsCalendar;
|
||||
messages.getSearchResultsPositions#9c7f2f10 flags:# peer:InputPeer saved_peer_id:flags.2?InputPeer filter:MessagesFilter offset_id:int limit:int = messages.SearchResultsPositions;
|
||||
|
|
@ -2399,13 +2534,23 @@ messages.getPaidReactionPrivacy#472455aa = Updates;
|
|||
messages.viewSponsoredMessage#269e3643 random_id:bytes = Bool;
|
||||
messages.clickSponsoredMessage#8235057e flags:# media:flags.0?true fullscreen:flags.1?true random_id:bytes = Bool;
|
||||
messages.reportSponsoredMessage#12cbf0c4 random_id:bytes option:bytes = channels.SponsoredMessageReportResult;
|
||||
messages.getSponsoredMessages#9bd2f439 peer:InputPeer = messages.SponsoredMessages;
|
||||
messages.getSponsoredMessages#3d6ce850 flags:# peer:InputPeer msg_id:flags.0?int = messages.SponsoredMessages;
|
||||
messages.savePreparedInlineMessage#f21f7f2f flags:# result:InputBotInlineResult user_id:InputUser peer_types:flags.0?Vector<InlineQueryPeerType> = messages.BotPreparedInlineMessage;
|
||||
messages.getPreparedInlineMessage#857ebdb8 bot:InputUser id:string = messages.PreparedInlineMessage;
|
||||
messages.searchStickers#29b1c66a flags:# emojis:flags.0?true q:string emoticon:string lang_code:Vector<string> offset:int limit:int hash:long = messages.FoundStickers;
|
||||
messages.reportMessagesDelivery#5a6d7395 flags:# push:flags.0?true peer:InputPeer id:Vector<int> = Bool;
|
||||
messages.getSavedDialogsByID#6f6f9c96 flags:# parent_peer:flags.1?InputPeer ids:Vector<InputPeer> = messages.SavedDialogs;
|
||||
messages.readSavedHistory#ba4a3b5b parent_peer:InputPeer peer:InputPeer max_id:int = Bool;
|
||||
messages.toggleTodoCompleted#d3e03124 peer:InputPeer msg_id:int completed:Vector<int> incompleted:Vector<int> = Updates;
|
||||
messages.appendTodoList#21a61057 peer:InputPeer msg_id:int list:Vector<TodoItem> = Updates;
|
||||
messages.toggleSuggestedPostApproval#8107455c flags:# reject:flags.1?true peer:InputPeer msg_id:int schedule_date:flags.0?int reject_comment:flags.2?string = Updates;
|
||||
messages.getForumTopics#3ba47bff flags:# peer:InputPeer q:flags.0?string offset_date:int offset_id:int offset_topic:int limit:int = messages.ForumTopics;
|
||||
messages.getForumTopicsByID#af0a4a08 peer:InputPeer topics:Vector<int> = messages.ForumTopics;
|
||||
messages.editForumTopic#cecc1134 flags:# peer:InputPeer topic_id:int title:flags.0?string icon_emoji_id:flags.1?long closed:flags.2?Bool hidden:flags.3?Bool = Updates;
|
||||
messages.updatePinnedForumTopic#175df251 peer:InputPeer topic_id:int pinned:Bool = Updates;
|
||||
messages.reorderPinnedForumTopics#e7841f0 flags:# force:flags.0?true peer:InputPeer order:Vector<int> = Updates;
|
||||
messages.createForumTopic#2f98c3d5 flags:# title_missing:flags.4?true peer:InputPeer title:string icon_color:flags.0?int icon_emoji_id:flags.3?long random_id:long send_as:flags.2?InputPeer = Updates;
|
||||
messages.deleteTopicHistory#d2816f10 peer:InputPeer top_msg_id:int = messages.AffectedHistory;
|
||||
|
||||
updates.getState#edd4882a = updates.State;
|
||||
updates.getDifference#19c2f763 flags:# pts:int pts_limit:flags.1?int pts_total_limit:flags.0?int date:int qts:int qts_limit:flags.2?int = updates.Difference;
|
||||
|
|
@ -2487,7 +2632,7 @@ channels.editLocation#58e63f6d channel:InputChannel geo_point:InputGeoPoint addr
|
|||
channels.toggleSlowMode#edd49ef0 channel:InputChannel seconds:int = Updates;
|
||||
channels.getInactiveChannels#11e831ee = messages.InactiveChats;
|
||||
channels.convertToGigagroup#b290c69 channel:InputChannel = Updates;
|
||||
channels.getSendAs#e785a43f flags:# for_paid_reactions:flags.0?true peer:InputPeer = channels.SendAsPeers;
|
||||
channels.getSendAs#e785a43f flags:# for_paid_reactions:flags.0?true for_live_stories:flags.1?true peer:InputPeer = channels.SendAsPeers;
|
||||
channels.deleteParticipantHistory#367544db channel:InputChannel participant:InputPeer = messages.AffectedHistory;
|
||||
channels.toggleJoinToSend#e4cb9580 channel:InputChannel enabled:Bool = Updates;
|
||||
channels.toggleJoinRequest#4c2985b6 channel:InputChannel enabled:Bool = Updates;
|
||||
|
|
@ -2495,13 +2640,6 @@ channels.reorderUsernames#b45ced1d channel:InputChannel order:Vector<string> = B
|
|||
channels.toggleUsername#50f24105 channel:InputChannel username:string active:Bool = Bool;
|
||||
channels.deactivateAllUsernames#a245dd3 channel:InputChannel = Bool;
|
||||
channels.toggleForum#3ff75734 channel:InputChannel enabled:Bool tabs:Bool = Updates;
|
||||
channels.createForumTopic#f40c0224 flags:# channel:InputChannel title:string icon_color:flags.0?int icon_emoji_id:flags.3?long random_id:long send_as:flags.2?InputPeer = Updates;
|
||||
channels.getForumTopics#de560d1 flags:# channel:InputChannel q:flags.0?string offset_date:int offset_id:int offset_topic:int limit:int = messages.ForumTopics;
|
||||
channels.getForumTopicsByID#b0831eb9 channel:InputChannel topics:Vector<int> = messages.ForumTopics;
|
||||
channels.editForumTopic#f4dfa185 flags:# channel:InputChannel topic_id:int title:flags.0?string icon_emoji_id:flags.1?long closed:flags.2?Bool hidden:flags.3?Bool = Updates;
|
||||
channels.updatePinnedForumTopic#6c2d9026 channel:InputChannel topic_id:int pinned:Bool = Updates;
|
||||
channels.deleteTopicHistory#34435f2d channel:InputChannel top_msg_id:int = messages.AffectedHistory;
|
||||
channels.reorderPinnedForumTopics#2950a18f flags:# force:flags.0?true channel:InputChannel order:Vector<int> = Updates;
|
||||
channels.toggleAntiSpam#68f3e4eb channel:InputChannel enabled:Bool = Updates;
|
||||
channels.reportAntiSpamFalsePositive#a850a693 channel:InputChannel msg_id:int = Bool;
|
||||
channels.toggleParticipantsHidden#6a6e7854 channel:InputChannel enabled:Bool = Updates;
|
||||
|
|
@ -2512,10 +2650,12 @@ channels.updateEmojiStatus#f0d3e6a8 channel:InputChannel emoji_status:EmojiStatu
|
|||
channels.setBoostsToUnblockRestrictions#ad399cee channel:InputChannel boosts:int = Updates;
|
||||
channels.setEmojiStickers#3cd930b7 channel:InputChannel stickerset:InputStickerSet = Bool;
|
||||
channels.restrictSponsoredMessages#9ae91519 channel:InputChannel restricted:Bool = Updates;
|
||||
channels.searchPosts#d19f987b hashtag:string offset_rate:int offset_peer:InputPeer offset_id:int limit:int = messages.Messages;
|
||||
channels.searchPosts#f2c4f24d flags:# hashtag:flags.0?string query:flags.1?string offset_rate:int offset_peer:InputPeer offset_id:int limit:int allow_paid_stars:flags.2?long = messages.Messages;
|
||||
channels.updatePaidMessagesPrice#4b12327b flags:# broadcast_messages_allowed:flags.0?true channel:InputChannel send_paid_messages_stars:long = Updates;
|
||||
channels.toggleAutotranslation#167fc0a1 channel:InputChannel enabled:Bool = Updates;
|
||||
channels.getMessageAuthor#ece2a0e6 channel:InputChannel id:int = User;
|
||||
channels.checkSearchPostsFlood#22567115 flags:# query:flags.0?string = SearchPostsFlood;
|
||||
channels.setMainProfileTab#3583fcb1 channel:InputChannel tab:ProfileTab = Bool;
|
||||
|
||||
bots.sendCustomRequest#aa2769ed custom_method:string params:DataJSON = DataJSON;
|
||||
bots.answerWebhookJSONQuery#e6213f4d query_id:long data:DataJSON = Bool;
|
||||
|
|
@ -2564,14 +2704,14 @@ payments.applyGiftCode#f6e26854 slug:string = Updates;
|
|||
payments.getGiveawayInfo#f4239425 peer:InputPeer msg_id:int = payments.GiveawayInfo;
|
||||
payments.launchPrepaidGiveaway#5ff58f20 peer:InputPeer giveaway_id:long purpose:InputStorePaymentPurpose = Updates;
|
||||
payments.getStarsTopupOptions#c00ec7d3 = Vector<StarsTopupOption>;
|
||||
payments.getStarsStatus#104fcfa7 peer:InputPeer = payments.StarsStatus;
|
||||
payments.getStarsTransactions#69da4557 flags:# inbound:flags.0?true outbound:flags.1?true ascending:flags.2?true subscription_id:flags.3?string peer:InputPeer offset:string limit:int = payments.StarsStatus;
|
||||
payments.getStarsStatus#4ea9b3bf flags:# ton:flags.0?true peer:InputPeer = payments.StarsStatus;
|
||||
payments.getStarsTransactions#69da4557 flags:# inbound:flags.0?true outbound:flags.1?true ascending:flags.2?true ton:flags.4?true subscription_id:flags.3?string peer:InputPeer offset:string limit:int = payments.StarsStatus;
|
||||
payments.sendStarsForm#7998c914 form_id:long invoice:InputInvoice = payments.PaymentResult;
|
||||
payments.refundStarsCharge#25ae8f4a user_id:InputUser charge_id:string = Updates;
|
||||
payments.getStarsRevenueStats#d91ffad6 flags:# dark:flags.0?true peer:InputPeer = payments.StarsRevenueStats;
|
||||
payments.getStarsRevenueWithdrawalUrl#13bbe8b3 peer:InputPeer stars:long password:InputCheckPasswordSRP = payments.StarsRevenueWithdrawalUrl;
|
||||
payments.getStarsRevenueStats#d91ffad6 flags:# dark:flags.0?true ton:flags.1?true peer:InputPeer = payments.StarsRevenueStats;
|
||||
payments.getStarsRevenueWithdrawalUrl#2433dc92 flags:# ton:flags.0?true peer:InputPeer amount:flags.1?long password:InputCheckPasswordSRP = payments.StarsRevenueWithdrawalUrl;
|
||||
payments.getStarsRevenueAdsAccountUrl#d1d7efc5 peer:InputPeer = payments.StarsRevenueAdsAccountUrl;
|
||||
payments.getStarsTransactionsByID#27842d2e peer:InputPeer id:Vector<InputStarsTransaction> = payments.StarsStatus;
|
||||
payments.getStarsTransactionsByID#2dca16b8 flags:# ton:flags.0?true peer:InputPeer id:Vector<InputStarsTransaction> = payments.StarsStatus;
|
||||
payments.getStarsGiftOptions#d3c96bc8 flags:# user_id:flags.0?InputUser = Vector<StarsGiftOption>;
|
||||
payments.getStarsSubscriptions#32512c5 flags:# missing_balance:flags.0?true peer:InputPeer offset:string = payments.StarsStatus;
|
||||
payments.changeStarsSubscription#c7770878 flags:# peer:InputPeer subscription_id:string canceled:flags.0?Bool = Bool;
|
||||
|
|
@ -2590,14 +2730,27 @@ payments.getStarGiftUpgradePreview#9c9abcb1 gift_id:long = payments.StarGiftUpgr
|
|||
payments.upgradeStarGift#aed6e4f5 flags:# keep_original_details:flags.0?true stargift:InputSavedStarGift = Updates;
|
||||
payments.transferStarGift#7f18176a stargift:InputSavedStarGift to_id:InputPeer = Updates;
|
||||
payments.getUniqueStarGift#a1974d72 slug:string = payments.UniqueStarGift;
|
||||
payments.getSavedStarGifts#23830de9 flags:# exclude_unsaved:flags.0?true exclude_saved:flags.1?true exclude_unlimited:flags.2?true exclude_limited:flags.3?true exclude_unique:flags.4?true sort_by_value:flags.5?true peer:InputPeer offset:string limit:int = payments.SavedStarGifts;
|
||||
payments.getSavedStarGifts#a319e569 flags:# exclude_unsaved:flags.0?true exclude_saved:flags.1?true exclude_unlimited:flags.2?true exclude_unique:flags.4?true sort_by_value:flags.5?true exclude_upgradable:flags.7?true exclude_unupgradable:flags.8?true peer_color_available:flags.9?true exclude_hosted:flags.10?true peer:InputPeer collection_id:flags.6?int offset:string limit:int = payments.SavedStarGifts;
|
||||
payments.getSavedStarGift#b455a106 stargift:Vector<InputSavedStarGift> = payments.SavedStarGifts;
|
||||
payments.getStarGiftWithdrawalUrl#d06e93a8 stargift:InputSavedStarGift password:InputCheckPasswordSRP = payments.StarGiftWithdrawalUrl;
|
||||
payments.toggleChatStarGiftNotifications#60eaefa1 flags:# enabled:flags.0?true peer:InputPeer = Bool;
|
||||
payments.toggleStarGiftsPinnedToTop#1513e7b0 peer:InputPeer stargift:Vector<InputSavedStarGift> = Bool;
|
||||
payments.canPurchaseStore#4fdc5ea7 purpose:InputStorePaymentPurpose = Bool;
|
||||
payments.getResaleStarGifts#7a5fa236 flags:# sort_by_price:flags.1?true sort_by_num:flags.2?true attributes_hash:flags.0?long gift_id:long attributes:flags.3?Vector<StarGiftAttributeId> offset:string limit:int = payments.ResaleStarGifts;
|
||||
payments.updateStarGiftPrice#3baea4e1 stargift:InputSavedStarGift resell_stars:long = Updates;
|
||||
payments.updateStarGiftPrice#edbe6ccb stargift:InputSavedStarGift resell_amount:StarsAmount = Updates;
|
||||
payments.createStarGiftCollection#1f4a0e87 peer:InputPeer title:string stargift:Vector<InputSavedStarGift> = StarGiftCollection;
|
||||
payments.updateStarGiftCollection#4fddbee7 flags:# peer:InputPeer collection_id:int title:flags.0?string delete_stargift:flags.1?Vector<InputSavedStarGift> add_stargift:flags.2?Vector<InputSavedStarGift> order:flags.3?Vector<InputSavedStarGift> = StarGiftCollection;
|
||||
payments.reorderStarGiftCollections#c32af4cc peer:InputPeer order:Vector<int> = Bool;
|
||||
payments.deleteStarGiftCollection#ad5648e8 peer:InputPeer collection_id:int = Bool;
|
||||
payments.getStarGiftCollections#981b91dd peer:InputPeer hash:long = payments.StarGiftCollections;
|
||||
payments.getUniqueStarGiftValueInfo#4365af6b slug:string = payments.UniqueStarGiftValueInfo;
|
||||
payments.checkCanSendGift#c0c4edc9 gift_id:long = payments.CheckCanSendGiftResult;
|
||||
payments.getStarGiftAuctionState#5c9ff4d6 auction:InputStarGiftAuction version:int = payments.StarGiftAuctionState;
|
||||
payments.getStarGiftAuctionAcquiredGifts#6ba2cbec gift_id:long = payments.StarGiftAuctionAcquiredGifts;
|
||||
payments.getStarGiftActiveAuctions#a5d0514d hash:long = payments.StarGiftActiveAuctions;
|
||||
payments.resolveStarGiftOffer#e9ce781c flags:# decline:flags.0?true offer_msg_id:int = Updates;
|
||||
payments.sendStarGiftOffer#8fb86b41 flags:# peer:InputPeer slug:string price:StarsAmount duration:int random_id:long allow_paid_stars:flags.0?long = Updates;
|
||||
payments.getStarGiftUpgradeAttributes#6d038b58 gift_id:long = payments.StarGiftUpgradeAttributes;
|
||||
|
||||
stickers.createStickerSet#9021ab67 flags:# masks:flags.0?true emojis:flags.5?true text_color:flags.6?true user_id:InputUser title:string short_name:string thumb:flags.2?InputDocument stickers:Vector<InputStickerSetItem> software:flags.3?string = messages.StickerSet;
|
||||
stickers.removeStickerFromSet#f7760f51 sticker:InputDocument = messages.StickerSet;
|
||||
|
|
@ -2625,7 +2778,7 @@ phone.joinGroupCall#8fb53057 flags:# muted:flags.0?true video_stopped:flags.2?tr
|
|||
phone.leaveGroupCall#500377f9 call:InputGroupCall source:int = Updates;
|
||||
phone.inviteToGroupCall#7b393160 call:InputGroupCall users:Vector<InputUser> = Updates;
|
||||
phone.discardGroupCall#7a777135 call:InputGroupCall = Updates;
|
||||
phone.toggleGroupCallSettings#74bbb43d flags:# reset_invite_hash:flags.1?true call:InputGroupCall join_muted:flags.0?Bool = Updates;
|
||||
phone.toggleGroupCallSettings#974392f2 flags:# reset_invite_hash:flags.1?true call:InputGroupCall join_muted:flags.0?Bool messages_enabled:flags.2?Bool send_paid_messages_stars:flags.3?long = Updates;
|
||||
phone.getGroupCall#41845db call:InputGroupCall limit:int = phone.GroupCall;
|
||||
phone.getGroupParticipants#c558d8ab call:InputGroupCall ids:Vector<InputPeer> sources:Vector<int> offset:string limit:int = phone.GroupParticipants;
|
||||
phone.checkGroupCall#b59cf977 call:InputGroupCall sources:Vector<int> = Vector<int>;
|
||||
|
|
@ -2640,7 +2793,7 @@ phone.saveDefaultGroupCallJoinAs#575e1f8c peer:InputPeer join_as:InputPeer = Boo
|
|||
phone.joinGroupCallPresentation#cbea6bc4 call:InputGroupCall params:DataJSON = Updates;
|
||||
phone.leaveGroupCallPresentation#1c50d144 call:InputGroupCall = Updates;
|
||||
phone.getGroupCallStreamChannels#1ab21940 call:InputGroupCall = phone.GroupCallStreamChannels;
|
||||
phone.getGroupCallStreamRtmpUrl#deb3abbf peer:InputPeer revoke:Bool = phone.GroupCallStreamRtmpUrl;
|
||||
phone.getGroupCallStreamRtmpUrl#5af4c73a flags:# live_story:flags.0?true peer:InputPeer revoke:Bool = phone.GroupCallStreamRtmpUrl;
|
||||
phone.saveCallLog#41248786 peer:InputPhoneCall file:InputFile = Bool;
|
||||
phone.createConferenceCall#7d0444bb flags:# muted:flags.0?true video_stopped:flags.2?true join:flags.3?true random_id:int public_key:flags.3?int256 block:flags.3?bytes params:flags.3?DataJSON = Updates;
|
||||
phone.deleteConferenceCallParticipants#8ca60525 flags:# only_left:flags.0?true kick:flags.1?true call:InputGroupCall ids:Vector<long> block:bytes = Updates;
|
||||
|
|
@ -2648,6 +2801,12 @@ phone.sendConferenceCallBroadcast#c6701900 call:InputGroupCall block:bytes = Upd
|
|||
phone.inviteConferenceCallParticipant#bcf22685 flags:# video:flags.0?true call:InputGroupCall user_id:InputUser = Updates;
|
||||
phone.declineConferenceCallInvite#3c479971 msg_id:int = Updates;
|
||||
phone.getGroupCallChainBlocks#ee9f88a6 call:InputGroupCall sub_chain_id:int offset:int limit:int = Updates;
|
||||
phone.sendGroupCallMessage#b1d11410 flags:# call:InputGroupCall random_id:long message:TextWithEntities allow_paid_stars:flags.0?long send_as:flags.1?InputPeer = Updates;
|
||||
phone.sendGroupCallEncryptedMessage#e5afa56d call:InputGroupCall encrypted_message:bytes = Bool;
|
||||
phone.deleteGroupCallMessages#f64f54f7 flags:# report_spam:flags.0?true call:InputGroupCall messages:Vector<int> = Updates;
|
||||
phone.deleteGroupCallParticipantMessages#1dbfeca0 flags:# report_spam:flags.0?true call:InputGroupCall participant:InputPeer = Updates;
|
||||
phone.getGroupCallStars#6f636302 call:InputGroupCall = phone.GroupCallStars;
|
||||
phone.saveDefaultSendAs#4167add1 call:InputGroupCall send_as:InputPeer = Bool;
|
||||
|
||||
langpack.getLangPack#f2f2330a lang_pack:string lang_code:string = LangPackDifference;
|
||||
langpack.getStrings#efea3803 lang_pack:string lang_code:string keys:Vector<string> = Vector<LangPackString>;
|
||||
|
|
@ -2664,9 +2823,6 @@ stats.getMessagePublicForwards#5f150144 channel:InputChannel msg_id:int offset:s
|
|||
stats.getMessageStats#b6e0a3f5 flags:# dark:flags.0?true channel:InputChannel msg_id:int = stats.MessageStats;
|
||||
stats.getStoryStats#374fef40 flags:# dark:flags.0?true peer:InputPeer id:int = stats.StoryStats;
|
||||
stats.getStoryPublicForwards#a6437ef6 peer:InputPeer id:int offset:string limit:int = stats.PublicForwards;
|
||||
stats.getBroadcastRevenueStats#f788ee19 flags:# dark:flags.0?true peer:InputPeer = stats.BroadcastRevenueStats;
|
||||
stats.getBroadcastRevenueWithdrawalUrl#9df4faad peer:InputPeer password:InputCheckPasswordSRP = stats.BroadcastRevenueWithdrawalUrl;
|
||||
stats.getBroadcastRevenueTransactions#70990b6d peer:InputPeer offset:int limit:int = stats.BroadcastRevenueTransactions;
|
||||
|
||||
chatlists.exportChatlistInvite#8472478e chatlist:InputChatlist title:string peers:Vector<InputPeer> = chatlists.ExportedChatlistInvite;
|
||||
chatlists.deleteExportedInvite#719c5c5e chatlist:InputChatlist slug:string = Bool;
|
||||
|
|
@ -2681,7 +2837,7 @@ chatlists.getLeaveChatlistSuggestions#fdbcd714 chatlist:InputChatlist = Vector<P
|
|||
chatlists.leaveChatlist#74fae13a chatlist:InputChatlist peers:Vector<InputPeer> = Updates;
|
||||
|
||||
stories.canSendStory#30eb63f0 peer:InputPeer = stories.CanSendStoryCount;
|
||||
stories.sendStory#e4e6694b flags:# pinned:flags.2?true noforwards:flags.4?true fwd_modified:flags.7?true peer:InputPeer media:InputMedia media_areas:flags.5?Vector<MediaArea> caption:flags.0?string entities:flags.1?Vector<MessageEntity> privacy_rules:Vector<InputPrivacyRule> random_id:long period:flags.3?int fwd_from_id:flags.6?InputPeer fwd_from_story:flags.6?int = Updates;
|
||||
stories.sendStory#737fc2ec flags:# pinned:flags.2?true noforwards:flags.4?true fwd_modified:flags.7?true peer:InputPeer media:InputMedia media_areas:flags.5?Vector<MediaArea> caption:flags.0?string entities:flags.1?Vector<MessageEntity> privacy_rules:Vector<InputPrivacyRule> random_id:long period:flags.3?int fwd_from_id:flags.6?InputPeer fwd_from_story:flags.6?int albums:flags.8?Vector<int> = Updates;
|
||||
stories.editStory#b583ba46 flags:# peer:InputPeer id:int media:flags.0?InputMedia media_areas:flags.3?Vector<MediaArea> caption:flags.1?string entities:flags.1?Vector<MessageEntity> privacy_rules:flags.2?Vector<InputPrivacyRule> = Updates;
|
||||
stories.deleteStories#ae59db5f peer:InputPeer id:Vector<int> = Vector<int>;
|
||||
stories.togglePinned#9a75a1ef peer:InputPeer id:Vector<int> pinned:Bool = Vector<int>;
|
||||
|
|
@ -2700,12 +2856,18 @@ stories.activateStealthMode#57bbd166 flags:# past:flags.0?true future:flags.1?tr
|
|||
stories.sendReaction#7fd736b2 flags:# add_to_recent:flags.0?true peer:InputPeer story_id:int reaction:Reaction = Updates;
|
||||
stories.getPeerStories#2c4ada50 peer:InputPeer = stories.PeerStories;
|
||||
stories.getAllReadPeerStories#9b5ae7f9 = Updates;
|
||||
stories.getPeerMaxIDs#535983c3 id:Vector<InputPeer> = Vector<int>;
|
||||
stories.getPeerMaxIDs#78499170 id:Vector<InputPeer> = Vector<RecentStory>;
|
||||
stories.getChatsToSend#a56a8b60 = messages.Chats;
|
||||
stories.togglePeerStoriesHidden#bd0415c4 peer:InputPeer hidden:Bool = Bool;
|
||||
stories.getStoryReactionsList#b9b2881f flags:# forwards_first:flags.2?true peer:InputPeer id:int reaction:flags.0?Reaction offset:flags.1?string limit:int = stories.StoryReactionsList;
|
||||
stories.togglePinnedToTop#b297e9b peer:InputPeer id:Vector<int> = Bool;
|
||||
stories.searchPosts#d1810907 flags:# hashtag:flags.0?string area:flags.1?MediaArea peer:flags.2?InputPeer offset:string limit:int = stories.FoundStories;
|
||||
stories.createAlbum#a36396e5 peer:InputPeer title:string stories:Vector<int> = StoryAlbum;
|
||||
stories.updateAlbum#5e5259b6 flags:# peer:InputPeer album_id:int title:flags.0?string delete_stories:flags.1?Vector<int> add_stories:flags.2?Vector<int> order:flags.3?Vector<int> = StoryAlbum;
|
||||
stories.reorderAlbums#8535fbd9 peer:InputPeer order:Vector<int> = Bool;
|
||||
stories.deleteAlbum#8d3456d0 peer:InputPeer album_id:int = Bool;
|
||||
stories.getAlbums#25b3eac7 peer:InputPeer hash:long = stories.Albums;
|
||||
stories.startLive#d069ccde flags:# pinned:flags.2?true noforwards:flags.4?true rtmp_stream:flags.5?true peer:InputPeer caption:flags.0?string entities:flags.1?Vector<MessageEntity> privacy_rules:Vector<InputPrivacyRule> random_id:long messages_enabled:flags.6?Bool send_paid_messages_stars:flags.7?long = Updates;
|
||||
|
||||
premium.getBoostsList#60f67660 flags:# gifts:flags.0?true peer:InputPeer offset:string limit:int = premium.BoostsList;
|
||||
premium.getMyBoosts#be77b4a = premium.MyBoosts;
|
||||
|
|
@ -2723,4 +2885,4 @@ smsjobs.finishJob#4f1ebf24 flags:# job_id:string error:flags.0?string = Bool;
|
|||
|
||||
fragment.getCollectibleInfo#be1e85ba collectible:InputCollectible = fragment.CollectibleInfo;
|
||||
|
||||
// LAYER 204
|
||||
// LAYER 220
|
||||
|
|
|
|||
|
|
@ -20,4 +20,4 @@ class {name}: # type: ignore
|
|||
raise TypeError("Base types can only be used for type checking purposes: "
|
||||
"you tried to use a base type instance as argument, "
|
||||
"but you need to instantiate one of its constructors instead. "
|
||||
"More info: https://pyrofork.wulan17.top/telegram/base/{doc_name}")
|
||||
"More info: https://pyrofork.wulan17.dev/telegram/base/{doc_name}")
|
||||
|
|
|
|||
|
|
@ -165,6 +165,7 @@ def pyrogram_api():
|
|||
""",
|
||||
messages="""
|
||||
Messages
|
||||
add_task_to_todo
|
||||
send_message
|
||||
forward_media_group
|
||||
forward_messages
|
||||
|
|
@ -174,6 +175,7 @@ def pyrogram_api():
|
|||
send_audio
|
||||
send_document
|
||||
send_sticker
|
||||
send_todo
|
||||
send_video
|
||||
send_animation
|
||||
send_voice
|
||||
|
|
@ -185,6 +187,7 @@ def pyrogram_api():
|
|||
send_contact
|
||||
send_cached_media
|
||||
send_reaction
|
||||
set_todo_tasks_completion
|
||||
edit_message_text
|
||||
edit_message_caption
|
||||
edit_message_media
|
||||
|
|
@ -282,6 +285,7 @@ def pyrogram_api():
|
|||
hide_general_topic
|
||||
reopen_forum_topic
|
||||
reopen_general_topic
|
||||
transfer_chat_ownership
|
||||
unhide_general_topic
|
||||
update_color
|
||||
update_folder
|
||||
|
|
@ -514,6 +518,7 @@ def pyrogram_api():
|
|||
Folder
|
||||
Restriction
|
||||
EmojiStatus
|
||||
ExportedFolderLink
|
||||
ForumTopic
|
||||
PeerUser
|
||||
PeerChannel
|
||||
|
|
@ -535,6 +540,11 @@ def pyrogram_api():
|
|||
MessageOrigin
|
||||
Photo
|
||||
Thumbnail
|
||||
TodoList
|
||||
TodoTask
|
||||
TodoTasksAdded
|
||||
TodoTasksCompleted
|
||||
TodoTasksIncompleted
|
||||
Audio
|
||||
AvailableEffect
|
||||
Document
|
||||
|
|
@ -734,6 +744,7 @@ def pyrogram_api():
|
|||
InputVenueMessageContent
|
||||
InputContactMessageContent
|
||||
InputInvoiceMessageContent
|
||||
InputTodoTask
|
||||
""",
|
||||
authorization="""
|
||||
Authorization
|
||||
|
|
|
|||
|
|
@ -73,7 +73,7 @@ html_theme_options = {
|
|||
"repo": "fontawesome/brands/github",
|
||||
"edit": "material/file-edit-outline",
|
||||
},
|
||||
"site_url": "https://pyrofork.wulan17.top/",
|
||||
"site_url": "https://pyrofork.wulan17.dev/",
|
||||
"repo_url": "https://github.com/Mayuri-Chan/pyrofork/",
|
||||
"repo_name": "pyrofork",
|
||||
"globaltoc_collapse": True,
|
||||
|
|
|
|||
|
|
@ -47,7 +47,7 @@ like send_audio(), send_document(), send_location(), etc...
|
|||
),
|
||||
InlineKeyboardButton( # Opens a web URL
|
||||
"URL",
|
||||
url="https://pyrofork.wulan17.top"
|
||||
url="https://pyrofork.wulan17.dev"
|
||||
),
|
||||
],
|
||||
[ # Second row
|
||||
|
|
|
|||
|
|
@ -24,13 +24,13 @@ It uses the @on_inline_query decorator to register an InlineQueryHandler.
|
|||
input_message_content=InputTextMessageContent(
|
||||
"Here's how to install **Pyrofork**"
|
||||
),
|
||||
url="https://pyrofork.wulan17.top/intro/install",
|
||||
url="https://pyrofork.wulan17.dev/intro/install",
|
||||
description="How to install Pyrofork",
|
||||
reply_markup=InlineKeyboardMarkup(
|
||||
[
|
||||
[InlineKeyboardButton(
|
||||
"Open website",
|
||||
url="https://pyrofork.wulan17.top/intro/install"
|
||||
url="https://pyrofork.wulan17.dev/intro/install"
|
||||
)]
|
||||
]
|
||||
)
|
||||
|
|
@ -40,13 +40,13 @@ It uses the @on_inline_query decorator to register an InlineQueryHandler.
|
|||
input_message_content=InputTextMessageContent(
|
||||
"Here's how to use **Pyrofork**"
|
||||
),
|
||||
url="https://pyrofork.wulan17.top/start/invoking",
|
||||
url="https://pyrofork.wulan17.dev/start/invoking",
|
||||
description="How to use Pyrofork",
|
||||
reply_markup=InlineKeyboardMarkup(
|
||||
[
|
||||
[InlineKeyboardButton(
|
||||
"Open website",
|
||||
url="https://pyrofork.wulan17.top/start/invoking"
|
||||
url="https://pyrofork.wulan17.dev/start/invoking"
|
||||
)]
|
||||
]
|
||||
)
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@ to make it only work for specific messages in a specific chat.
|
|||
# Target chat. Can also be a list of multiple chat ids/usernames
|
||||
TARGET = -100123456789
|
||||
# Welcome message template
|
||||
MESSAGE = "{} Welcome to [Pyrofork](https://pyrofork.wulan17.top/)'s group chat {}!"
|
||||
MESSAGE = "{} Welcome to [Pyrofork](https://pyrofork.wulan17.dev/)'s group chat {}!"
|
||||
|
||||
app = Client("my_account")
|
||||
|
||||
|
|
|
|||
|
|
@ -80,7 +80,20 @@ Using async_pymongo (Recommended for python3.9+):
|
|||
print(await app.get_me())
|
||||
|
||||
|
||||
Using motor:
|
||||
Using official mongodb driver:
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
from pymongo import AsyncMongoClient
|
||||
from pyrogram import Client
|
||||
|
||||
conn = AsyncMongoClient("mongodb://...")
|
||||
|
||||
async with Client("my_account", mongodb=dict(connection=conn, remove_peers=False)) as app:
|
||||
print(await app.get_me())
|
||||
|
||||
|
||||
Using motor (Deprecated, but still works):
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ authors = [{ name = "wulan17", email = "mayuri@mayuri.my.id" }]
|
|||
dependencies = ["pyaes==1.6.1", "pysocks==1.7.1", "pymediainfo-pyrofork>=6.0.1,<7.0.0"]
|
||||
readme = "README.md"
|
||||
license = "LGPL-3.0-or-later"
|
||||
requires-python = "~=3.9"
|
||||
requires-python = "~=3.10"
|
||||
classifiers = [
|
||||
"Development Status :: 5 - Production/Stable",
|
||||
"Intended Audience :: Developers",
|
||||
|
|
@ -15,11 +15,11 @@ classifiers = [
|
|||
"Operating System :: OS Independent",
|
||||
"Programming Language :: Python",
|
||||
"Programming Language :: Python :: 3",
|
||||
"Programming Language :: Python :: 3.9",
|
||||
"Programming Language :: Python :: 3.10",
|
||||
"Programming Language :: Python :: 3.11",
|
||||
"Programming Language :: Python :: 3.12",
|
||||
"Programming Language :: Python :: 3.13",
|
||||
"Programming Language :: Python :: 3.14",
|
||||
"Programming Language :: Python :: Implementation",
|
||||
"Programming Language :: Python :: Implementation :: CPython",
|
||||
"Programming Language :: Python :: Implementation :: PyPy",
|
||||
|
|
@ -43,7 +43,7 @@ Homepage = "https://github.com/Mayuri-Chan"
|
|||
Tracker = "https://github.com/Mayuri-Chan/pyrofork/issues"
|
||||
Community = "https://t.me/MayuriChan_Chat"
|
||||
Source = "https://github.com/Mayuri-Chan/pyrofork"
|
||||
Documentation = "https://pyrofork.wulan17.top"
|
||||
Documentation = "https://pyrofork.wulan17.dev"
|
||||
|
||||
[build-system]
|
||||
requires = ["hatchling"]
|
||||
|
|
@ -60,7 +60,7 @@ dev = [
|
|||
|
||||
docs = [
|
||||
"sphinx",
|
||||
"sphinx-immaterial==0.12.4",
|
||||
"sphinx-immaterial==0.12.5",
|
||||
"sphinx_copybutton",
|
||||
"sphinx-autobuild",
|
||||
"tornado>=6.3.3"
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@
|
|||
# along with Pyrofork. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
__fork_name__ = "PyroFork"
|
||||
__version__ = "2.3.67"
|
||||
__version__ = "2.3.69"
|
||||
__license__ = "GNU Lesser General Public License v3.0 (LGPL-3.0)"
|
||||
__copyright__ = "Copyright (C) 2022-present Mayuri-Chan <https://github.com/Mayuri-Chan>"
|
||||
|
||||
|
|
|
|||
|
|
@ -227,6 +227,8 @@ class Client(Methods):
|
|||
SYSTEM_VERSION = f"{platform.system()} {platform.release()}"
|
||||
|
||||
LANG_CODE = "en"
|
||||
LANG_PACK = ""
|
||||
SYSTEM_LANG_CODE = "en-US"
|
||||
|
||||
PARENT_DIR = Path(sys.argv[0]).parent
|
||||
|
||||
|
|
@ -252,7 +254,9 @@ class Client(Methods):
|
|||
app_version: str = APP_VERSION,
|
||||
device_model: str = DEVICE_MODEL,
|
||||
system_version: str = SYSTEM_VERSION,
|
||||
system_lang_code: str = SYSTEM_LANG_CODE,
|
||||
lang_code: str = LANG_CODE,
|
||||
lang_pack: str = LANG_PACK,
|
||||
ipv6: Optional[bool] = False,
|
||||
alt_port: Optional[bool] = False,
|
||||
proxy: Optional[dict] = None,
|
||||
|
|
@ -288,7 +292,9 @@ class Client(Methods):
|
|||
self.app_version = app_version
|
||||
self.device_model = device_model
|
||||
self.system_version = system_version
|
||||
self.system_lang_code = system_lang_code.lower()
|
||||
self.lang_code = lang_code.lower()
|
||||
self.lang_pack = lang_pack.lower()
|
||||
self.ipv6 = ipv6
|
||||
self.alt_port = alt_port
|
||||
self.proxy = proxy
|
||||
|
|
@ -445,7 +451,7 @@ class Client(Methods):
|
|||
return await self.sign_in_bot(value)
|
||||
else:
|
||||
self.phone_number = value
|
||||
|
||||
if not self.use_qrcode:
|
||||
sent_code = await self.send_code(self.phone_number)
|
||||
except BadRequest as e:
|
||||
print(e.MESSAGE)
|
||||
|
|
@ -453,7 +459,7 @@ class Client(Methods):
|
|||
self.bot_token = None
|
||||
else:
|
||||
break
|
||||
|
||||
if not self.use_qrcode:
|
||||
sent_code_descriptions = {
|
||||
enums.SentCodeType.APP: "Telegram app",
|
||||
enums.SentCodeType.SMS: "SMS",
|
||||
|
|
@ -819,7 +825,7 @@ class Client(Methods):
|
|||
if session_empty:
|
||||
if not self.api_id or not self.api_hash:
|
||||
raise AttributeError("The API key is required for new authorizations. "
|
||||
"More info: https://pyrofork.wulan17.top/main/start/auth")
|
||||
"More info: https://pyrofork.wulan17.dev/main/start/auth")
|
||||
|
||||
await self.storage.api_id(self.api_id)
|
||||
|
||||
|
|
|
|||
|
|
@ -55,7 +55,7 @@ except ImportError:
|
|||
log.warning(
|
||||
"TgCrypto is missing! "
|
||||
"Pyrogram will work the same, but at a much slower speed. "
|
||||
"More info: https://pyrofork.wulan17.top/main/topics/speedups"
|
||||
"More info: https://pyrofork.wulan17.dev/main/topics/speedups"
|
||||
)
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -95,7 +95,12 @@ class Dispatcher:
|
|||
|
||||
def __init__(self, client: "pyrogram.Client"):
|
||||
self.client = client
|
||||
self.loop = asyncio.get_event_loop()
|
||||
try:
|
||||
loop = asyncio.get_event_loop()
|
||||
except RuntimeError:
|
||||
loop = asyncio.new_event_loop()
|
||||
asyncio.set_event_loop(loop)
|
||||
self.loop = loop
|
||||
|
||||
self.handler_worker_tasks = []
|
||||
self.locks_list = []
|
||||
|
|
|
|||
|
|
@ -84,3 +84,6 @@ class MessageMediaType(AutoName):
|
|||
|
||||
PAID_MEDIA = auto()
|
||||
"Paid media"
|
||||
|
||||
TODO = auto()
|
||||
"To-Do list media"
|
||||
|
|
|
|||
|
|
@ -135,3 +135,9 @@ class MessageServiceType(AutoName):
|
|||
|
||||
PAID_MESSAGE_PRICE_CHANGED = auto()
|
||||
"Paid message price changed"
|
||||
|
||||
TODO_TASKS_ADDED = auto()
|
||||
"To-Do tasks added"
|
||||
|
||||
TODO_TASKS_COMPLETION = auto()
|
||||
"To-Do tasks completion/incompletion"
|
||||
|
|
|
|||
|
|
@ -796,7 +796,7 @@ from_scheduled = create(from_scheduled_filter)
|
|||
|
||||
# region linked_channel_filter
|
||||
async def linked_channel_filter(_, __, m: Message):
|
||||
return bool(m.forward_from_chat and not m.from_user)
|
||||
return bool((m.forward_origin and m.forward_origin.chat) and not m.from_user)
|
||||
|
||||
|
||||
linked_channel = create(linked_channel_filter)
|
||||
|
|
|
|||
|
|
@ -23,6 +23,7 @@ from .bots import Bots
|
|||
from .chats import Chats
|
||||
from .contacts import Contacts
|
||||
from .decorators import Decorators
|
||||
from .forums import Forums
|
||||
from .invite_links import InviteLinks
|
||||
from .messages import Messages
|
||||
from .password import Password
|
||||
|
|
@ -45,6 +46,7 @@ class Methods(
|
|||
Payments,
|
||||
Phone,
|
||||
Chats,
|
||||
Forums,
|
||||
Stickers,
|
||||
Users,
|
||||
Messages,
|
||||
|
|
|
|||
|
|
@ -28,17 +28,24 @@ class GetCollectibleItemInfo:
|
|||
phone_number: str = None
|
||||
) -> "types.CollectibleInfo":
|
||||
"""Returns information about a given collectible item that was purchased at https://fragment.com
|
||||
|
||||
.. include:: /_includes/usable-by/users.rst
|
||||
|
||||
You must use exactly one of ``username`` OR ``phone_number``.
|
||||
|
||||
Parameters:
|
||||
username (``str``, *optional*):
|
||||
Describes a collectible username that can be purchased at https://fragment.com
|
||||
|
||||
phone_number (``str``, *optional*):
|
||||
Describes a collectible phone number that can be purchased at https://fragment.com
|
||||
|
||||
Returns:
|
||||
:obj:`~pyrogram.types.CollectibleInfo`: On success, a collectible info is returned.
|
||||
|
||||
Example:
|
||||
.. code-block:: python
|
||||
|
||||
username = await app.get_collectible_item_info(username="nerd")
|
||||
print(username)
|
||||
"""
|
||||
|
|
|
|||
|
|
@ -21,24 +21,14 @@ from .add_chat_members import AddChatMembers
|
|||
from .archive_chats import ArchiveChats
|
||||
from .ban_chat_member import BanChatMember
|
||||
from .create_channel import CreateChannel
|
||||
from .create_forum_topic import CreateForumTopic
|
||||
from .create_group import CreateGroup
|
||||
from .create_supergroup import CreateSupergroup
|
||||
from .close_forum_topic import CloseForumTopic
|
||||
from .close_general_topic import CloseGeneralTopic
|
||||
from .delete_channel import DeleteChannel
|
||||
from .delete_chat_photo import DeleteChatPhoto
|
||||
from .delete_folder import DeleteFolder
|
||||
from .delete_forum_topic import DeleteForumTopic
|
||||
from .delete_supergroup import DeleteSupergroup
|
||||
from .delete_user_history import DeleteUserHistory
|
||||
from .edit_forum_topic import EditForumTopic
|
||||
from .edit_general_topic import EditGeneralTopic
|
||||
from .export_folder_link import ExportFolderLink
|
||||
from .reopen_forum_topic import ReopenForumTopic
|
||||
from .reopen_general_topic import ReopenGeneralTopic
|
||||
from .hide_general_topic import HideGeneralTopic
|
||||
from .unhide_general_topic import UnhideGeneralTopic
|
||||
from .get_chat import GetChat
|
||||
from .get_chat_event_log import GetChatEventLog
|
||||
from .get_chat_member import GetChatMember
|
||||
|
|
@ -48,9 +38,6 @@ from .get_chat_online_count import GetChatOnlineCount
|
|||
from .get_dialogs import GetDialogs
|
||||
from .get_dialogs_count import GetDialogsCount
|
||||
from .get_folders import GetFolders
|
||||
from .get_forum_topics import GetForumTopics
|
||||
from .get_forum_topics_by_id import GetForumTopicsByID
|
||||
from .get_forum_topics_count import GetForumTopicsCount
|
||||
from .get_send_as_chats import GetSendAsChats
|
||||
from .join_chat import JoinChat
|
||||
from .leave_chat import LeaveChat
|
||||
|
|
@ -67,6 +54,7 @@ from .set_chat_title import SetChatTitle
|
|||
from .set_chat_username import SetChatUsername
|
||||
from .set_send_as_chat import SetSendAsChat
|
||||
from .set_slow_mode import SetSlowMode
|
||||
from .transfer_chat_ownership import TransferChatOwnership
|
||||
from .unarchive_chats import UnarchiveChats
|
||||
from .unban_chat_member import UnbanChatMember
|
||||
from .unpin_all_chat_messages import UnpinAllChatMessages
|
||||
|
|
@ -97,29 +85,16 @@ class Chats(
|
|||
SetChatPermissions,
|
||||
GetDialogsCount,
|
||||
GetFolders,
|
||||
GetForumTopics,
|
||||
GetForumTopicsByID,
|
||||
GetForumTopicsCount,
|
||||
ArchiveChats,
|
||||
UnarchiveChats,
|
||||
CreateGroup,
|
||||
CreateSupergroup,
|
||||
CreateChannel,
|
||||
CreateForumTopic,
|
||||
CloseForumTopic,
|
||||
CloseGeneralTopic,
|
||||
AddChatMembers,
|
||||
DeleteChannel,
|
||||
DeleteFolder,
|
||||
DeleteForumTopic,
|
||||
DeleteSupergroup,
|
||||
EditForumTopic,
|
||||
EditGeneralTopic,
|
||||
ExportFolderLink,
|
||||
ReopenForumTopic,
|
||||
ReopenGeneralTopic,
|
||||
HideGeneralTopic,
|
||||
UnhideGeneralTopic,
|
||||
SetAdministratorTitle,
|
||||
SetSlowMode,
|
||||
DeleteUserHistory,
|
||||
|
|
@ -130,6 +105,7 @@ class Chats(
|
|||
GetSendAsChats,
|
||||
SetSendAsChat,
|
||||
SetChatProtectedContent,
|
||||
TransferChatOwnership,
|
||||
UpdateColor,
|
||||
UpdateFolder
|
||||
):
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@ class ExportFolderLink:
|
|||
async def export_folder_link(
|
||||
self: "pyrogram.Client",
|
||||
folder_id: int
|
||||
) -> str:
|
||||
) -> "pyrogram.types.ExportedFolderLink":
|
||||
"""Export link to a user's folder.
|
||||
|
||||
.. include:: /_includes/usable-by/users.rst
|
||||
|
|
@ -35,7 +35,7 @@ class ExportFolderLink:
|
|||
Unique identifier (int) of the target folder.
|
||||
|
||||
Returns:
|
||||
``str``: On success, a link to the folder as string is returned.
|
||||
:obj:`~pyrogram.types.ExportedFolderLink` objects.
|
||||
|
||||
Example:
|
||||
.. code-block:: python
|
||||
|
|
@ -67,4 +67,4 @@ class ExportFolderLink:
|
|||
)
|
||||
)
|
||||
|
||||
return r.invite.url
|
||||
return types.ExportedFolderLink._parse(r)
|
||||
|
|
|
|||
|
|
@ -81,7 +81,7 @@ class GetFolders:
|
|||
users.update({i.id: i for i in r.users})
|
||||
chats.update({i.id: i for i in r.chats})
|
||||
|
||||
folders = types.List(types.Folder._parse(self, folder, users, chats) for folder in raw_folders)
|
||||
folders = types.List([types.Folder._parse(self, folder, users, chats) for folder in raw_folders])
|
||||
|
||||
if not folders:
|
||||
return None
|
||||
|
|
|
|||
83
pyrogram/methods/chats/transfer_chat_ownership.py
Normal file
83
pyrogram/methods/chats/transfer_chat_ownership.py
Normal file
|
|
@ -0,0 +1,83 @@
|
|||
# Pyrofork - Telegram MTProto API Client Library for Python
|
||||
# Copyright (C) 2022-present Mayuri-Chan <https://github.com/Mayuri-Chan>
|
||||
#
|
||||
# This file is part of Pyrofork.
|
||||
#
|
||||
# Pyrofork is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Lesser General Public License as published
|
||||
# by the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# Pyrofork is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Lesser General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Lesser General Public License
|
||||
# along with Pyrofork. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
from typing import Union
|
||||
import pyrogram
|
||||
from pyrogram import raw, utils
|
||||
|
||||
|
||||
class TransferChatOwnership:
|
||||
async def transfer_chat_ownership(
|
||||
self: "pyrogram.Client",
|
||||
chat_id: Union[int, str],
|
||||
user_id: Union[int, str],
|
||||
password: str,
|
||||
) -> bool:
|
||||
"""Transfer the owner of a chat or channel to another user.
|
||||
|
||||
.. note:
|
||||
|
||||
Requires owner privileges.
|
||||
|
||||
.. include:: /_includes/usable-by/users.rst
|
||||
|
||||
Parameters:
|
||||
chat_id (``int`` | ``str``):
|
||||
Unique identifier (int) or username (str) of the target chat.
|
||||
Unique identifier for the target chat in form of a *t.me/joinchat/* link, identifier (int) or username
|
||||
of the target channel/supergroup (in the format @username).
|
||||
|
||||
user_id (``int`` | ``str``):
|
||||
Unique identifier (int) or username (str) of the new owner.
|
||||
For a contact that exists in your Telegram address book you can use his phone number (str).
|
||||
|
||||
password (``str``):
|
||||
The 2-step verification password of the current user.
|
||||
|
||||
Returns:
|
||||
``bool``: True on success.
|
||||
|
||||
Raises:
|
||||
ValueError: In case of invalid parameters.
|
||||
RPCError: In case of a Telegram RPC error.
|
||||
|
||||
Example:
|
||||
.. code-block:: python
|
||||
|
||||
await app.transfer_chat_ownership(chat_id, user_id, "password")
|
||||
"""
|
||||
peer_channel = await self.resolve_peer(chat_id)
|
||||
peer_user = await self.resolve_peer(user_id)
|
||||
|
||||
if not isinstance(peer_channel, raw.types.InputPeerChannel):
|
||||
raise ValueError("The chat_id must belong to a channel/supergroup.")
|
||||
|
||||
if not isinstance(peer_user, raw.types.InputPeerUser):
|
||||
raise ValueError("The user_id must belong to a user.")
|
||||
|
||||
r = await self.invoke(
|
||||
raw.functions.channels.EditCreator(
|
||||
channel=peer_channel,
|
||||
user_id=peer_user,
|
||||
password=utils.compute_password_check(
|
||||
await self.invoke(raw.functions.account.GetPassword()), password
|
||||
),
|
||||
)
|
||||
)
|
||||
|
||||
return bool(r)
|
||||
|
|
@ -20,8 +20,7 @@
|
|||
from typing import List, Union
|
||||
|
||||
import pyrogram
|
||||
from pyrogram import raw
|
||||
from pyrogram import enums
|
||||
from pyrogram import enums, raw, types, utils
|
||||
|
||||
|
||||
class UpdateFolder:
|
||||
|
|
@ -29,6 +28,7 @@ class UpdateFolder:
|
|||
self: "pyrogram.Client",
|
||||
folder_id: int,
|
||||
title: str,
|
||||
title_entities: List["types.MessageEntity"] = None,
|
||||
included_chats: Union[Union[int, str], List[Union[int, str]]] = None,
|
||||
excluded_chats: Union[Union[int, str], List[Union[int, str]]] = None,
|
||||
pinned_chats: Union[Union[int, str], List[Union[int, str]]] = None,
|
||||
|
|
@ -41,7 +41,8 @@ class UpdateFolder:
|
|||
exclude_read: bool = None,
|
||||
exclude_archived: bool = None,
|
||||
color: "enums.FolderColor" = None,
|
||||
emoji: str = None
|
||||
emoji: str = None,
|
||||
parse_mode: "pyrogram.enums.ParseMode" = pyrogram.enums.ParseMode.DEFAULT
|
||||
) -> bool:
|
||||
"""Create or update a user's folder.
|
||||
|
||||
|
|
@ -54,6 +55,9 @@ class UpdateFolder:
|
|||
title (``str``):
|
||||
Folder title.
|
||||
|
||||
title_entities (List of :obj:`~pyrogram.types.MessageEntity`, *optional*):
|
||||
Entities for the folder title.
|
||||
|
||||
included_chats (``int`` | ``str`` | List of ``int`` or ``str``, *optional*):
|
||||
Users or chats that should added in the folder
|
||||
You can pass an ID (int), username (str) or phone number (str).
|
||||
|
|
@ -98,6 +102,9 @@ class UpdateFolder:
|
|||
Color type.
|
||||
Pass :obj:`~pyrogram.enums.FolderColor` to set folder color.
|
||||
|
||||
parse_mode (:obj:`~pyrogram.enums.ParseMode`, *optional*):
|
||||
The parse mode to use for the title.
|
||||
|
||||
Returns:
|
||||
``bool``: True, on success.
|
||||
|
||||
|
|
@ -107,6 +114,8 @@ class UpdateFolder:
|
|||
# Create or update folder
|
||||
app.update_folder(folder_id, title="New folder", included_chats="me")
|
||||
"""
|
||||
title_text, title_entities = (await utils.parse_text_entities(self, title, parse_mode, title_entities)).values()
|
||||
|
||||
if not isinstance(included_chats, list):
|
||||
included_chats = [included_chats] if included_chats else []
|
||||
if not isinstance(excluded_chats, list):
|
||||
|
|
@ -119,7 +128,10 @@ class UpdateFolder:
|
|||
id=folder_id,
|
||||
filter=raw.types.DialogFilter(
|
||||
id=folder_id,
|
||||
title=title,
|
||||
title=raw.types.TextWithEntities(
|
||||
text=title_text,
|
||||
entities=title_entities or []
|
||||
),
|
||||
pinned_peers=[
|
||||
await self.resolve_peer(user_id)
|
||||
for user_id in pinned_chats
|
||||
|
|
@ -146,4 +158,4 @@ class UpdateFolder:
|
|||
)
|
||||
)
|
||||
|
||||
return r
|
||||
return bool(r)
|
||||
|
|
|
|||
49
pyrogram/methods/forums/__init__.py
Normal file
49
pyrogram/methods/forums/__init__.py
Normal file
|
|
@ -0,0 +1,49 @@
|
|||
# Pyrofork - Telegram MTProto API Client Library for Python
|
||||
# Copyright (C) 2022-present Mayuri-Chan <https://github.com/Mayuri-Chan>
|
||||
#
|
||||
# This file is part of Pyrofork.
|
||||
#
|
||||
# Pyrofork is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Lesser General Public License as published
|
||||
# by the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# Pyrofork is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Lesser General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Lesser General Public License
|
||||
# along with Pyrofork. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
from .create_forum_topic import CreateForumTopic
|
||||
from .close_forum_topic import CloseForumTopic
|
||||
from .close_general_topic import CloseGeneralTopic
|
||||
from .delete_forum_topic import DeleteForumTopic
|
||||
from .edit_forum_topic import EditForumTopic
|
||||
from .edit_general_topic import EditGeneralTopic
|
||||
from .reopen_forum_topic import ReopenForumTopic
|
||||
from .reopen_general_topic import ReopenGeneralTopic
|
||||
from .hide_general_topic import HideGeneralTopic
|
||||
from .unhide_general_topic import UnhideGeneralTopic
|
||||
from .get_forum_topics import GetForumTopics
|
||||
from .get_forum_topics_by_id import GetForumTopicsByID
|
||||
from .get_forum_topics_count import GetForumTopicsCount
|
||||
|
||||
|
||||
class Forums(
|
||||
GetForumTopics,
|
||||
GetForumTopicsByID,
|
||||
GetForumTopicsCount,
|
||||
CreateForumTopic,
|
||||
CloseForumTopic,
|
||||
CloseGeneralTopic,
|
||||
DeleteForumTopic,
|
||||
EditForumTopic,
|
||||
EditGeneralTopic,
|
||||
ReopenForumTopic,
|
||||
ReopenGeneralTopic,
|
||||
HideGeneralTopic,
|
||||
UnhideGeneralTopic,
|
||||
):
|
||||
pass
|
||||
|
|
@ -48,7 +48,7 @@ class CloseForumTopic:
|
|||
await app.close_forum_topic(chat_id, topic_id)
|
||||
"""
|
||||
await self.invoke(
|
||||
raw.functions.channels.EditForumTopic(
|
||||
raw.functions.messages.EditForumTopic(
|
||||
channel=await self.resolve_peer(chat_id),
|
||||
topic_id=topic_id,
|
||||
closed=True
|
||||
|
|
@ -44,7 +44,7 @@ class CloseGeneralTopic:
|
|||
await app.close_general_topic(chat_id)
|
||||
"""
|
||||
await self.invoke(
|
||||
raw.functions.channels.EditForumTopic(
|
||||
raw.functions.messages.EditForumTopic(
|
||||
channel=await self.resolve_peer(chat_id),
|
||||
topic_id=1,
|
||||
closed=True
|
||||
|
|
@ -56,7 +56,7 @@ class CreateForumTopic:
|
|||
await app.create_forum_topic("Topic Title")
|
||||
"""
|
||||
r = await self.invoke(
|
||||
raw.functions.channels.CreateForumTopic(
|
||||
raw.functions.messages.CreateForumTopic(
|
||||
channel=await self.resolve_peer(chat_id),
|
||||
title=title,
|
||||
random_id=self.rnd_id(),
|
||||
|
|
@ -49,7 +49,7 @@ class DeleteForumTopic:
|
|||
"""
|
||||
try:
|
||||
await self.invoke(
|
||||
raw.functions.channels.DeleteTopicHistory(
|
||||
raw.functions.messages.DeleteTopicHistory(
|
||||
channel=await self.resolve_peer(chat_id),
|
||||
top_msg_id=topic_id
|
||||
)
|
||||
|
|
@ -56,7 +56,7 @@ class EditForumTopic:
|
|||
await app.edit_forum_topic(chat_id,topic_id,"New Topic Title")
|
||||
"""
|
||||
await self.invoke(
|
||||
raw.functions.channels.EditForumTopic(
|
||||
raw.functions.messages.EditForumTopic(
|
||||
channel=await self.resolve_peer(chat_id),
|
||||
topic_id=topic_id,
|
||||
title=title,
|
||||
|
|
@ -48,7 +48,7 @@ class EditGeneralTopic:
|
|||
await app.edit_general_topic(chat_id,"New Topic Title")
|
||||
"""
|
||||
await self.invoke(
|
||||
raw.functions.channels.EditForumTopic(
|
||||
raw.functions.messages.EditForumTopic(
|
||||
channel=await self.resolve_peer(chat_id),
|
||||
topic_id=1,
|
||||
title=title
|
||||
|
|
@ -26,17 +26,37 @@ from pyrogram import types
|
|||
|
||||
log = logging.getLogger(__name__)
|
||||
|
||||
async def get_chunk(
|
||||
client: "pyrogram.Client",
|
||||
chat_id: Union[int, str],
|
||||
offset_date: int,
|
||||
offset_id: int,
|
||||
offset_topic: int,
|
||||
limit: int
|
||||
):
|
||||
peer = await client.resolve_peer(chat_id)
|
||||
|
||||
r = await client.invoke(
|
||||
raw.functions.messages.GetForumTopics(
|
||||
channel=peer,
|
||||
offset_date=offset_date,
|
||||
offset_id=offset_id,
|
||||
offset_topic=offset_topic,
|
||||
limit=limit
|
||||
),
|
||||
sleep_threshold=-1
|
||||
)
|
||||
|
||||
return r.topics
|
||||
|
||||
|
||||
class GetForumTopics:
|
||||
async def get_forum_topics(
|
||||
self: "pyrogram.Client",
|
||||
chat_id: Union[int, str],
|
||||
limit: int = 0,
|
||||
offset_date: int = 0,
|
||||
offset_id: int = 0,
|
||||
offset_topic: int = 0
|
||||
limit: int = 0
|
||||
) -> Optional[AsyncGenerator["types.ForumTopic", None]]:
|
||||
"""Get one or more topic from a chat.
|
||||
"""Get forum topics from a chat.
|
||||
|
||||
.. include:: /_includes/usable-by/users.rst
|
||||
|
||||
|
|
@ -47,15 +67,7 @@ class GetForumTopics:
|
|||
|
||||
limit (``int``, *optional*):
|
||||
Limits the number of topics to be retrieved.
|
||||
|
||||
offset_date (``int``, *optional*):
|
||||
Date of the last message of the last found topic.
|
||||
|
||||
offset_id (``int``, *optional*):
|
||||
ID of the last message of the last found topic.
|
||||
|
||||
offset_topic (``int``, *optional*):
|
||||
ID of the last found topic.
|
||||
By default, no limit is applied and all topics are returned.
|
||||
|
||||
Returns:
|
||||
``Generator``: On success, a generator yielding :obj:`~pyrogram.types.ForumTopic` objects is returned.
|
||||
|
|
@ -70,12 +82,35 @@ class GetForumTopics:
|
|||
Raises:
|
||||
ValueError: In case of invalid arguments.
|
||||
"""
|
||||
current = 0
|
||||
offset_date = 0
|
||||
offset_id = 0
|
||||
offset_topic = 0
|
||||
total = abs(limit) or (1 << 31) - 1
|
||||
chunk_limit = min(100, total)
|
||||
|
||||
peer = await self.resolve_peer(chat_id)
|
||||
while True:
|
||||
topics = await get_chunk(
|
||||
client=self,
|
||||
chat_id=chat_id,
|
||||
offset_date=offset_date,
|
||||
offset_id=offset_id,
|
||||
offset_topic=offset_topic,
|
||||
limit=chunk_limit
|
||||
)
|
||||
|
||||
rpc = raw.functions.channels.GetForumTopics(channel=peer, offset_date=offset_date, offset_id=offset_id, offset_topic=offset_topic, limit=limit)
|
||||
if not topics:
|
||||
return
|
||||
|
||||
r = await self.invoke(rpc, sleep_threshold=-1)
|
||||
last_topic = topics[-1]
|
||||
offset_date = int(last_topic.date) if last_topic.date else 0
|
||||
offset_id = last_topic.top_message if last_topic.top_message else 0
|
||||
offset_topic = last_topic.id
|
||||
|
||||
for _topic in r.topics:
|
||||
yield types.ForumTopic._parse(_topic)
|
||||
for topic in topics:
|
||||
yield types.ForumTopic._parse(topic)
|
||||
|
||||
current += 1
|
||||
|
||||
if current >= total:
|
||||
return
|
||||
|
|
@ -76,7 +76,7 @@ class GetForumTopicsByID:
|
|||
ids = list(ids) if is_iterable else [ids]
|
||||
ids = [i for i in ids]
|
||||
|
||||
rpc = raw.functions.channels.GetForumTopicsByID(channel=peer, topics=ids)
|
||||
rpc = raw.functions.messages.GetForumTopicsByID(channel=peer, topics=ids)
|
||||
|
||||
r = await self.invoke(rpc, sleep_threshold=-1)
|
||||
|
||||
|
|
@ -56,7 +56,7 @@ class GetForumTopicsCount:
|
|||
|
||||
peer = await self.resolve_peer(chat_id)
|
||||
|
||||
rpc = raw.functions.channels.GetForumTopics(channel=peer, offset_date=0, offset_id=0, offset_topic=0, limit=0)
|
||||
rpc = raw.functions.messages.GetForumTopics(channel=peer, offset_date=0, offset_id=0, offset_topic=0, limit=0)
|
||||
|
||||
r = await self.invoke(rpc, sleep_threshold=-1)
|
||||
|
||||
|
|
@ -43,7 +43,7 @@ class HideGeneralTopic:
|
|||
await app.hide_general_topic(chat_id)
|
||||
"""
|
||||
await self.invoke(
|
||||
raw.functions.channels.EditForumTopic(
|
||||
raw.functions.messages.EditForumTopic(
|
||||
channel=await self.resolve_peer(chat_id),
|
||||
topic_id=1,
|
||||
hidden=True
|
||||
|
|
@ -48,7 +48,7 @@ class ReopenForumTopic:
|
|||
await app.reopen_forum_topic(chat_id, topic_id)
|
||||
"""
|
||||
await self.invoke(
|
||||
raw.functions.channels.EditForumTopic(
|
||||
raw.functions.messages.EditForumTopic(
|
||||
channel=await self.resolve_peer(chat_id),
|
||||
topic_id=topic_id,
|
||||
closed=False
|
||||
|
|
@ -44,7 +44,7 @@ class ReopenGeneralTopic:
|
|||
await app.reopen_general_topic(chat_id, topic_id)
|
||||
"""
|
||||
await self.invoke(
|
||||
raw.functions.channels.EditForumTopic(
|
||||
raw.functions.messages.EditForumTopic(
|
||||
channel=await self.resolve_peer(chat_id),
|
||||
topic_id=1,
|
||||
closed=False
|
||||
|
|
@ -44,7 +44,7 @@ class UnhideGeneralTopic:
|
|||
await app.unhide_general_topic(chat_id)
|
||||
"""
|
||||
await self.invoke(
|
||||
raw.functions.channels.EditForumTopic(
|
||||
raw.functions.messages.EditForumTopic(
|
||||
channel=await self.resolve_peer(chat_id),
|
||||
topic_id=1,
|
||||
hidden=False
|
||||
|
|
@ -17,6 +17,7 @@
|
|||
# You should have received a copy of the GNU Lesser General Public License
|
||||
# along with Pyrofork. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
from .add_task_to_todo import AddTaskToTodo
|
||||
from .copy_media_group import CopyMediaGroup
|
||||
from .copy_message import CopyMessage
|
||||
from .delete_chat_history import DeleteChatHistory
|
||||
|
|
@ -52,6 +53,7 @@ from .search_global_hashtag_messages import SearchGlobalHashtagMessages
|
|||
from .search_global_hashtag_messages_count import SearchGlobalHashtagMessagesCount
|
||||
from .search_messages import SearchMessages
|
||||
from .search_messages_count import SearchMessagesCount
|
||||
from .set_todo_tasks_completion import SetTodoTasksCompletion
|
||||
from .send_animation import SendAnimation
|
||||
from .send_audio import SendAudio
|
||||
from .send_cached_media import SendCachedMedia
|
||||
|
|
@ -66,6 +68,7 @@ from .send_photo import SendPhoto
|
|||
from .send_poll import SendPoll
|
||||
from .send_reaction import SendReaction
|
||||
from .send_sticker import SendSticker
|
||||
from .send_todo import SendTodo
|
||||
from .send_venue import SendVenue
|
||||
from .send_video import SendVideo
|
||||
from .send_video_note import SendVideoNote
|
||||
|
|
@ -79,6 +82,7 @@ from .transcribe_audio import TranscribeAudio
|
|||
from .translate_text import TranslateText
|
||||
|
||||
class Messages(
|
||||
AddTaskToTodo,
|
||||
DeleteChatHistory,
|
||||
DeleteMessages,
|
||||
DeleteScheduledMessages,
|
||||
|
|
@ -93,6 +97,7 @@ class Messages(
|
|||
GetMessages,
|
||||
GetMessageReadParticipants,
|
||||
GetScheduledMessages,
|
||||
SetTodoTasksCompletion,
|
||||
SendAudio,
|
||||
SendChatAction,
|
||||
SendContact,
|
||||
|
|
@ -103,6 +108,7 @@ class Messages(
|
|||
SendMessage,
|
||||
SendPhoto,
|
||||
SendSticker,
|
||||
SendTodo,
|
||||
SendVenue,
|
||||
SendVideo,
|
||||
SendVideoNote,
|
||||
|
|
|
|||
82
pyrogram/methods/messages/add_task_to_todo.py
Normal file
82
pyrogram/methods/messages/add_task_to_todo.py
Normal file
|
|
@ -0,0 +1,82 @@
|
|||
# Pyrofork - Telegram MTProto API Client Library for Python
|
||||
# Copyright (C) 2022-present Mayuri-Chan <https://github.com/Mayuri-Chan>
|
||||
#
|
||||
# This file is part of Pyrofork.
|
||||
#
|
||||
# Pyrofork is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Lesser General Public License as published
|
||||
# by the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# Pyrofork is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Lesser General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Lesser General Public License
|
||||
# along with Pyrofork. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
import pyrogram
|
||||
|
||||
from pyrogram import raw, types, utils
|
||||
from typing import Union, List
|
||||
|
||||
|
||||
class AddTaskToTodo:
|
||||
async def add_task_to_todo(
|
||||
self: "pyrogram.Client",
|
||||
chat_id: Union[int, str],
|
||||
message_id: Union[int, str],
|
||||
tasks: List["types.InputTodoTask"],
|
||||
parse_mode: str = None
|
||||
) -> "types.Message":
|
||||
"""Add tasks to a todo list.
|
||||
|
||||
Parameters:
|
||||
chat_id (``int`` | ``str``):
|
||||
Unique identifier for the target chat or username of the target channel.
|
||||
|
||||
message_id (``int`` | ``str``):
|
||||
Unique identifier for the target message or username of the target channel.
|
||||
|
||||
tasks (List of :obj:`~pyrogram.types.InputTodoTask`):
|
||||
List of tasks to be added to the todo list.
|
||||
|
||||
parse_mode (``str``, *optional*):
|
||||
The parse mode to use for formatting the text.
|
||||
|
||||
entities (List of :obj:`~pyrogram.types.MessageEntity`, *optional*):
|
||||
Entities in the title of the todo list.
|
||||
"""
|
||||
tasks_list = []
|
||||
get_message = await self.get_messages(chat_id, message_id)
|
||||
if not isinstance(get_message, types.Message):
|
||||
raise ValueError("The message must be a valid Message object.")
|
||||
todo_list = get_message.todo
|
||||
last_task_id = max((task.id for task in todo_list.tasks), default=0)
|
||||
for i, task in enumerate(tasks):
|
||||
task_title, task_entities = (await utils.parse_text_entities(self, task.title, parse_mode, task.entities)).values()
|
||||
tasks_list.append(
|
||||
raw.types.TodoItem(
|
||||
id=last_task_id + i + 1,
|
||||
title=raw.types.TextWithEntities(
|
||||
text=task_title,
|
||||
entities=task_entities or []
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
r = await self.invoke(
|
||||
raw.functions.messages.AppendTodoList(
|
||||
peer=await self.resolve_peer(chat_id),
|
||||
msg_id=message_id,
|
||||
list=tasks_list
|
||||
)
|
||||
)
|
||||
|
||||
for update in r.updates:
|
||||
if isinstance(update, (raw.types.UpdateNewMessage,
|
||||
raw.types.UpdateNewChannelMessage,
|
||||
raw.types.UpdateNewScheduledMessage,
|
||||
raw.types.UpdateBotNewBusinessMessage)):
|
||||
return types.Message._parse(self, update.message, update, r.users, r.chats)
|
||||
|
|
@ -150,6 +150,17 @@ class DownloadMedia:
|
|||
directory, file_name = os.path.split(file_name)
|
||||
file_name = file_name or media_file_name or ""
|
||||
|
||||
# Sanitize file name
|
||||
# CWE-22: Path Traversal
|
||||
if file_name:
|
||||
# Remove any path components, keeping only the basename
|
||||
file_name = os.path.basename(file_name)
|
||||
# Remove null bytes which could cause issues
|
||||
file_name = file_name.replace('\x00', '')
|
||||
# Handle edge cases
|
||||
if not file_name or file_name in ('.', '..'):
|
||||
file_name = ""
|
||||
|
||||
if not os.path.isabs(file_name):
|
||||
directory = self.PARENT_DIR / (directory or DEFAULT_DOWNLOAD_DIR)
|
||||
|
||||
|
|
|
|||
|
|
@ -159,9 +159,6 @@ class SendCachedMedia:
|
|||
media = utils.get_input_media_from_file_id(file_id)
|
||||
media.spoiler = has_spoiler
|
||||
|
||||
media = utils.get_input_media_from_file_id(file_id)
|
||||
media.spoiler = has_spoiler
|
||||
|
||||
r = await self.invoke(
|
||||
raw.functions.messages.SendMedia(
|
||||
peer=await self.resolve_peer(chat_id),
|
||||
|
|
|
|||
|
|
@ -143,7 +143,7 @@ class SendMessage:
|
|||
await app.send_message("me", "Message sent with **Pyrogram**!")
|
||||
|
||||
# Disable web page previews
|
||||
await app.send_message("me", "https://pyrofork.wulan17.top",
|
||||
await app.send_message("me", "https://pyrofork.wulan17.dev",
|
||||
disable_web_page_preview=True)
|
||||
|
||||
# Reply to a message using its id
|
||||
|
|
@ -167,7 +167,7 @@ class SendMessage:
|
|||
reply_markup=InlineKeyboardMarkup(
|
||||
[
|
||||
[InlineKeyboardButton("Data", callback_data="callback_data")],
|
||||
[InlineKeyboardButton("Docs", url="https://pyrofork.wulan17.top")]
|
||||
[InlineKeyboardButton("Docs", url="https://pyrofork.wulan17.dev")]
|
||||
]))
|
||||
"""
|
||||
|
||||
|
|
|
|||
99
pyrogram/methods/messages/send_todo.py
Normal file
99
pyrogram/methods/messages/send_todo.py
Normal file
|
|
@ -0,0 +1,99 @@
|
|||
# Pyrofork - Telegram MTProto API Client Library for Python
|
||||
# Copyright (C) 2022-present Mayuri-Chan <https://github.com/Mayuri-Chan>
|
||||
#
|
||||
# This file is part of Pyrofork.
|
||||
#
|
||||
# Pyrofork is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Lesser General Public License as published
|
||||
# by the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# Pyrofork is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Lesser General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Lesser General Public License
|
||||
# along with Pyrofork. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
import pyrogram
|
||||
|
||||
from pyrogram import raw, types, utils
|
||||
from typing import Union, List
|
||||
|
||||
|
||||
class SendTodo:
|
||||
async def send_todo(
|
||||
self: "pyrogram.Client",
|
||||
chat_id: Union[int, str],
|
||||
title: str,
|
||||
tasks: List["types.InputTodoTask"],
|
||||
entities: List["types.MessageEntity"] = None,
|
||||
can_append: bool = False,
|
||||
can_complete: bool = False,
|
||||
parse_mode: Union[str, None] = None
|
||||
):
|
||||
"""Send a todo list to a chat.
|
||||
|
||||
Parameters:
|
||||
chat_id (``int`` | ``str``):
|
||||
Unique identifier for the target chat or username of the target channel.
|
||||
|
||||
title (``str``):
|
||||
Title of the todo list.
|
||||
|
||||
tasks (List of :obj:`~pyrogram.types.TodoTask`):
|
||||
List of tasks in the todo list.
|
||||
|
||||
entities (List of :obj:`~pyrogram.types.MessageEntity`, *optional*):
|
||||
Entities in the title of the todo list.
|
||||
|
||||
can_append (``bool``, *optional*):
|
||||
True, if other users can append tasks to this todo list.
|
||||
|
||||
can_complete (``bool``, *optional*):
|
||||
True, if other users can complete tasks in this todo list.
|
||||
"""
|
||||
title, entities = (await utils.parse_text_entities(self, title, parse_mode, entities)).values()
|
||||
tasks_list = []
|
||||
for i, task in enumerate(tasks):
|
||||
task_title, task_entities = (await utils.parse_text_entities(self, task.title, parse_mode, task.entities)).values()
|
||||
tasks_list.append(
|
||||
raw.types.TodoItem(
|
||||
id=i + 1,
|
||||
title=raw.types.TextWithEntities(
|
||||
text=task_title,
|
||||
entities=task_entities or []
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
r = await self.invoke(
|
||||
raw.functions.messages.SendMedia(
|
||||
peer=await self.resolve_peer(chat_id),
|
||||
message="",
|
||||
random_id=self.rnd_id(),
|
||||
media=raw.types.InputMediaTodo(
|
||||
todo=raw.types.TodoList(
|
||||
title=raw.types.TextWithEntities(
|
||||
text=title,
|
||||
entities=entities or []
|
||||
),
|
||||
list=tasks_list,
|
||||
others_can_append=can_append,
|
||||
others_can_complete=can_complete
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
for i in r.updates:
|
||||
if isinstance(i, (raw.types.UpdateNewMessage,
|
||||
raw.types.UpdateNewChannelMessage,
|
||||
raw.types.UpdateNewScheduledMessage,
|
||||
raw.types.UpdateBotNewBusinessMessage)):
|
||||
return await types.Message._parse(
|
||||
self, i.message,
|
||||
{i.id: i for i in r.users},
|
||||
{i.id: i for i in r.chats},
|
||||
is_scheduled=isinstance(i, raw.types.UpdateNewScheduledMessage)
|
||||
)
|
||||
76
pyrogram/methods/messages/set_todo_tasks_completion.py
Normal file
76
pyrogram/methods/messages/set_todo_tasks_completion.py
Normal file
|
|
@ -0,0 +1,76 @@
|
|||
# Pyrofork - Telegram MTProto API Client Library for Python
|
||||
# Copyright (C) 2022-present Mayuri-Chan <https://github.com/Mayuri-Chan>
|
||||
#
|
||||
# This file is part of Pyrofork.
|
||||
#
|
||||
# Pyrofork is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Lesser General Public License as published
|
||||
# by the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# Pyrofork is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Lesser General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Lesser General Public License
|
||||
# along with Pyrofork. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
from typing import List, Union
|
||||
from pyrogram import raw, types
|
||||
|
||||
|
||||
class SetTodoTasksCompletion:
|
||||
async def set_todo_tasks_completion(
|
||||
self,
|
||||
chat_id: int | str,
|
||||
message_id: int,
|
||||
completed_ids: Union[int, List[int]] = None,
|
||||
incompleted_ids: Union[int, List[int]] = None
|
||||
) -> "types.Message":
|
||||
"""Set the completion status of one or more todo tasks.
|
||||
|
||||
Parameters:
|
||||
chat_id (``int`` | ``str``):
|
||||
Unique identifier (int) or username (str) of the target chat.
|
||||
|
||||
message_id (``int``):
|
||||
Unique identifier of the message containing the todo list.
|
||||
|
||||
completed_ids (``int`` | List of ``int``, *optional*):
|
||||
Unique identifier of the todo tasks to be marked as completed.
|
||||
If a list is provided, all tasks in the list will be marked as completed.
|
||||
|
||||
incompleted_ids (``int`` | List of ``int``, *optional*):
|
||||
Unique identifier of the todo tasks to be marked as incomplete.
|
||||
If a list is provided, all tasks in the list will be marked as incomplete.
|
||||
"""
|
||||
is_complete_iterable = None
|
||||
is_incomplete_iterable = None
|
||||
if completed_ids:
|
||||
is_complete_iterable = not isinstance(completed_ids, int)
|
||||
if incompleted_ids:
|
||||
is_incomplete_iterable = not isinstance(incompleted_ids, int)
|
||||
if not is_complete_iterable and not is_incomplete_iterable:
|
||||
raise ValueError("At least one of completed_ids or incompleted_ids must be provided.")
|
||||
|
||||
r = await self.invoke(
|
||||
raw.functions.messages.ToggleTodoCompleted(
|
||||
peer=await self.resolve_peer(chat_id),
|
||||
msg_id=message_id,
|
||||
completed=(completed_ids if is_complete_iterable else [completed_ids]) if completed_ids else [],
|
||||
incompleted=(incompleted_ids if is_incomplete_iterable else [incompleted_ids]) if incompleted_ids else []
|
||||
)
|
||||
)
|
||||
|
||||
for i in r.updates:
|
||||
if isinstance(i, (raw.types.UpdateNewMessage,
|
||||
raw.types.UpdateNewChannelMessage,
|
||||
raw.types.UpdateNewScheduledMessage,
|
||||
raw.types.UpdateBotNewBusinessMessage)):
|
||||
return await types.Message._parse(
|
||||
self, i.message,
|
||||
{i.id: i for i in r.users},
|
||||
{i.id: i for i in r.chats},
|
||||
is_scheduled=isinstance(i, raw.types.UpdateNewScheduledMessage)
|
||||
)
|
||||
|
|
@ -56,7 +56,7 @@ class UpdateProfile:
|
|||
await app.update_profile(first_name="Pyrofork")
|
||||
|
||||
# Update first name and bio
|
||||
await app.update_profile(first_name="Pyrofork", bio="https://pyrofork.wulan17.top/")
|
||||
await app.update_profile(first_name="Pyrofork", bio="https://pyrofork.wulan17.dev/")
|
||||
|
||||
# Remove the last name
|
||||
await app.update_profile(last_name="")
|
||||
|
|
|
|||
|
|
@ -131,9 +131,9 @@ class Session:
|
|||
app_version=self.client.app_version,
|
||||
device_model=self.client.device_model,
|
||||
system_version=self.client.system_version,
|
||||
system_lang_code=self.client.lang_code,
|
||||
system_lang_code=self.client.system_lang_code,
|
||||
lang_code=self.client.lang_code,
|
||||
lang_pack="",
|
||||
lang_pack=self.client.lang_pack,
|
||||
query=raw.functions.help.GetConfig(),
|
||||
)
|
||||
),
|
||||
|
|
|
|||
|
|
@ -29,7 +29,11 @@ from pyrogram.methods.utilities import idle as idle_module, compose as compose_m
|
|||
|
||||
def async_to_sync(obj, name):
|
||||
function = getattr(obj, name)
|
||||
try:
|
||||
main_loop = asyncio.get_event_loop()
|
||||
except RuntimeError:
|
||||
main_loop = asyncio.new_event_loop()
|
||||
asyncio.set_event_loop(main_loop)
|
||||
|
||||
def async_to_sync_gen(agen, loop, is_main_thread):
|
||||
async def anext(agen):
|
||||
|
|
|
|||
|
|
@ -26,6 +26,7 @@ from .input_location_message_content import InputLocationMessageContent
|
|||
from .input_venue_message_content import InputVenueMessageContent
|
||||
from .input_contact_message_content import InputContactMessageContent
|
||||
from .input_invoice_message_content import InputInvoiceMessageContent
|
||||
from .input_todo_task import InputTodoTask
|
||||
|
||||
__all__ = [
|
||||
"InputMessageContent",
|
||||
|
|
@ -36,5 +37,6 @@ __all__ = [
|
|||
"InputLocationMessageContent",
|
||||
"InputVenueMessageContent",
|
||||
"InputContactMessageContent",
|
||||
"InputInvoiceMessageContent"
|
||||
"InputInvoiceMessageContent",
|
||||
"InputTodoTask"
|
||||
]
|
||||
|
|
|
|||
37
pyrogram/types/input_message_content/input_todo_task.py
Normal file
37
pyrogram/types/input_message_content/input_todo_task.py
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
# Pyrofork - Telegram MTProto API Client Library for Python
|
||||
# Copyright (C) 2022-present Mayuri-Chan <https://github.com/Mayuri-Chan>
|
||||
#
|
||||
# This file is part of Pyrofork.
|
||||
#
|
||||
# Pyrofork is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Lesser General Public License as published
|
||||
# by the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# Pyrofork is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Lesser General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Lesser General Public License
|
||||
# along with Pyrofork. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
from ..object import Object
|
||||
|
||||
|
||||
class InputTodoTask(Object):
|
||||
"""Contains information about a todo task.
|
||||
|
||||
Parameters:
|
||||
title (``str``):
|
||||
Title of the task.
|
||||
|
||||
entities (List of :obj:`~pyrogram.types.MessageEntity`):
|
||||
Entities in the title of the task.
|
||||
"""
|
||||
|
||||
def __init__(self, *, title: str, entities: list = None):
|
||||
super().__init__()
|
||||
|
||||
self.title = title
|
||||
self.entities = entities
|
||||
|
|
@ -55,6 +55,11 @@ from .stickerset import StickerSet
|
|||
from .stories_privacy_rules import StoriesPrivacyRules
|
||||
from .stripped_thumbnail import StrippedThumbnail
|
||||
from .thumbnail import Thumbnail
|
||||
from .todo_list import TodoList
|
||||
from .todo_task import TodoTask
|
||||
from .todo_tasks_added import TodoTasksAdded
|
||||
from .todo_tasks_completed import TodoTasksCompleted
|
||||
from .todo_tasks_incompleted import TodoTasksIncompleted
|
||||
from .venue import Venue
|
||||
from .video import Video
|
||||
from .video_note import VideoNote
|
||||
|
|
@ -142,5 +147,10 @@ __all__ = [
|
|||
"WallpaperSettings",
|
||||
"TranscribedAudio",
|
||||
"TranslatedText",
|
||||
"TextQuote"
|
||||
"TextQuote",
|
||||
"TodoList",
|
||||
"TodoTask",
|
||||
"TodoTasksAdded",
|
||||
"TodoTasksCompleted",
|
||||
"TodoTasksIncompleted"
|
||||
]
|
||||
|
|
|
|||
|
|
@ -86,7 +86,7 @@ class Message(Object, Update):
|
|||
|
||||
topic (:obj:`~pyrogram.types.ForumTopic`, *optional*):
|
||||
Topic the message belongs to.
|
||||
only returned using when client.get_messages.
|
||||
only returned when using client.get_messages.
|
||||
|
||||
forward_origin (:obj:`~pyrogram.types.MessageOrigin`, *optional*):
|
||||
Information about the original message for forwarded messages.
|
||||
|
|
@ -194,6 +194,9 @@ class Message(Object, Update):
|
|||
paid_media (:obj:`~pyrogram.types.PaidMedia`, *optional*):
|
||||
Message is a paid media, information about the paid media.
|
||||
|
||||
todo (:obj:`~pyrogram.types.Todo`, *optional*):
|
||||
Message is a todo list, information about the todo list.
|
||||
|
||||
sticker (:obj:`~pyrogram.types.Sticker`, *optional*):
|
||||
Message is a sticker, information about the sticker.
|
||||
|
||||
|
|
@ -404,6 +407,21 @@ class Message(Object, Update):
|
|||
gifted_premium (:obj:`~pyrogram.types.GiftedPremium`, *optional*):
|
||||
Info about a gifted Telegram Premium subscription
|
||||
|
||||
screenshot_taken (:obj:`~pyrogram.types.ScreenshotTaken`, *optional*):
|
||||
Service message: screenshot taken.
|
||||
|
||||
paid_message_price_changed (:obj:`~pyrogram.types.PaidMessagePriceChanged`, *optional*):
|
||||
Service message: paid message price changed.
|
||||
|
||||
todo_tasks_added (:obj:`~pyrogram.types.TodoTasksAdded`, *optional*):
|
||||
Service message: todo tasks added.
|
||||
|
||||
todo_tasks_completed (:obj:`~pyrogram.types.TodoTasksCompleted`, *optional*):
|
||||
Service message: todo tasks completed.
|
||||
|
||||
todo_tasks_incompleted (:obj:`~pyrogram.types.TodoTasksIncompleted`, *optional*):
|
||||
Service message: todo tasks incompleted.
|
||||
|
||||
link (``str``, *property*):
|
||||
Generate a link to this message, only for groups and channels.
|
||||
|
||||
|
|
@ -468,6 +486,7 @@ class Message(Object, Update):
|
|||
document: "types.Document" = None,
|
||||
photo: "types.Photo" = None,
|
||||
paid_media: "types.PaidMedia" = None,
|
||||
todo: "types.Todo" = None,
|
||||
sticker: "types.Sticker" = None,
|
||||
animation: "types.Animation" = None,
|
||||
game: "types.Game" = None,
|
||||
|
|
@ -481,6 +500,9 @@ class Message(Object, Update):
|
|||
gift: "types.Gift" = None,
|
||||
screenshot_taken: "types.ScreenshotTaken" = None,
|
||||
paid_message_price_changed: "types.PaidMessagePriceChanged" = None,
|
||||
todo_tasks_added: "types.TodoTasksAdded" = None,
|
||||
todo_tasks_completed: "types.TodoTasksCompleted" = None,
|
||||
todo_tasks_incompleted: "types.TodoTasksIncompleted" = None,
|
||||
invoice: "types.Invoice" = None,
|
||||
story: Union["types.MessageStory", "types.Story"] = None,
|
||||
alternative_videos: List["types.AlternativeVideo"] = None,
|
||||
|
|
@ -551,6 +573,7 @@ class Message(Object, Update):
|
|||
self.sender_business_bot = sender_business_bot
|
||||
self.date = date
|
||||
self.chat = chat
|
||||
self.topic = topic
|
||||
self.forward_origin = forward_origin
|
||||
self.external_reply = external_reply
|
||||
self.is_topic_message = is_topic_message
|
||||
|
|
@ -584,6 +607,7 @@ class Message(Object, Update):
|
|||
self.document = document
|
||||
self.photo = photo
|
||||
self.paid_media = paid_media
|
||||
self.todo = todo
|
||||
self.sticker = sticker
|
||||
self.animation = animation
|
||||
self.game = game
|
||||
|
|
@ -598,6 +622,9 @@ class Message(Object, Update):
|
|||
self.gift = gift
|
||||
self.screenshot_taken = screenshot_taken
|
||||
self.paid_message_price_changed = paid_message_price_changed
|
||||
self.todo_tasks_added = todo_tasks_added
|
||||
self.todo_tasks_completed = todo_tasks_completed
|
||||
self.todo_tasks_incompleted = todo_tasks_incompleted
|
||||
self.invoice = invoice
|
||||
self.story = story
|
||||
self.video = video
|
||||
|
|
@ -763,6 +790,9 @@ class Message(Object, Update):
|
|||
gift = None
|
||||
screenshot_taken = None
|
||||
paid_message_price_changed = None
|
||||
todo_tasks_added = None
|
||||
todo_tasks_completed = None
|
||||
todo_tasks_incompleted = None
|
||||
|
||||
service_type = None
|
||||
chat_join_type = None
|
||||
|
|
@ -888,6 +918,7 @@ class Message(Object, Update):
|
|||
paid_message_price_changed = types.PaidMessagePriceChanged._parse(action)
|
||||
service_type = enums.MessageServiceType.PAID_MESSAGE_PRICE_CHANGED
|
||||
|
||||
|
||||
parsed_message = Message(
|
||||
id=message.id,
|
||||
message_thread_id=message_thread_id,
|
||||
|
|
@ -967,6 +998,34 @@ class Message(Object, Update):
|
|||
parsed_message.service = enums.MessageServiceType.GAME_HIGH_SCORE
|
||||
except MessageIdsEmpty:
|
||||
pass
|
||||
if isinstance(action, raw.types.MessageActionTodoCompletions):
|
||||
if action.completed:
|
||||
parsed_message.todo_tasks_completed = types.TodoTasksCompleted._parse(action)
|
||||
if action.incompleted:
|
||||
parsed_message.todo_tasks_incompleted = types.TodoTasksIncompleted._parse(action)
|
||||
parsed_message.service_type = enums.MessageServiceType.TODO_TASKS_COMPLETION
|
||||
try:
|
||||
parsed_message.reply_to_message = await client.get_messages(
|
||||
parsed_message.chat.id,
|
||||
reply_to_message_ids=message.id,
|
||||
replies=0
|
||||
)
|
||||
except MessageIdsEmpty:
|
||||
pass
|
||||
parsed_message.reply_to_message_id = message.reply_to.reply_to_msg_id
|
||||
|
||||
if isinstance(action, raw.types.MessageActionTodoAppendTasks):
|
||||
parsed_message.todo_tasks_added = types.TodoTasksAdded._parse(client, action)
|
||||
parsed_message.service = enums.MessageServiceType.TODO_TASKS_ADDED
|
||||
try:
|
||||
parsed_message.reply_to_message = await client.get_messages(
|
||||
parsed_message.chat.id,
|
||||
reply_to_message_ids=message.id,
|
||||
replies=0
|
||||
)
|
||||
except MessageIdsEmpty:
|
||||
pass
|
||||
parsed_message.reply_to_message_id = message.reply_to.reply_to_msg_id
|
||||
|
||||
client.message_cache[(parsed_message.chat.id, parsed_message.id)] = parsed_message
|
||||
|
||||
|
|
@ -1004,6 +1063,7 @@ class Message(Object, Update):
|
|||
|
||||
photo = None
|
||||
paid_media = None
|
||||
todo = None
|
||||
location = None
|
||||
contact = None
|
||||
venue = None
|
||||
|
|
@ -1130,6 +1190,9 @@ class Message(Object, Update):
|
|||
elif isinstance(media, raw.types.MessageMediaPaidMedia):
|
||||
paid_media = types.PaidMedia._parse(client, media)
|
||||
media_type = enums.MessageMediaType.PAID_MEDIA
|
||||
elif isinstance(media, raw.types.MessageMediaToDo):
|
||||
todo = types.TodoList._parse(client, media, users)
|
||||
media_type = enums.MessageMediaType.TODO
|
||||
else:
|
||||
media = None
|
||||
|
||||
|
|
@ -1199,6 +1262,7 @@ class Message(Object, Update):
|
|||
invert_media=message.invert_media,
|
||||
photo=photo,
|
||||
paid_media=paid_media,
|
||||
todo=todo,
|
||||
location=location,
|
||||
contact=contact,
|
||||
venue=venue,
|
||||
|
|
|
|||
83
pyrogram/types/messages_and_media/todo_list.py
Normal file
83
pyrogram/types/messages_and_media/todo_list.py
Normal file
|
|
@ -0,0 +1,83 @@
|
|||
# Pyrofork - Telegram MTProto API Client Library for Python
|
||||
# Copyright (C) 2022-present Mayuri-Chan <https://github.com/Mayuri-Chan>
|
||||
#
|
||||
# This file is part of Pyrofork.
|
||||
#
|
||||
# Pyrofork is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Lesser General Public License as published
|
||||
# by the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# Pyrofork is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Lesser General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Lesser General Public License
|
||||
# along with Pyrofork. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
|
||||
from typing import List, Dict
|
||||
|
||||
import pyrogram
|
||||
from pyrogram import raw, types
|
||||
from ..object import Object
|
||||
|
||||
|
||||
class TodoList(Object):
|
||||
"""A list of tasks.
|
||||
|
||||
Parameters:
|
||||
title (``str``):
|
||||
Title of the todo list.
|
||||
|
||||
entities (List of :obj:`~pyrogram.types.MessageEntity`):
|
||||
Entities in the title of the todo list.
|
||||
|
||||
tasks (List of :obj:`~pyrogram.types.TodoTask`):
|
||||
List of tasks in the todo list.
|
||||
|
||||
can_append (``bool``, optional):
|
||||
True, if other users can append tasks to this todo list.
|
||||
|
||||
can_complete (``bool``, optional):
|
||||
True, if other users can complete tasks in this todo list.
|
||||
"""
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
title: str,
|
||||
entities: List["types.MessageEntity"],
|
||||
tasks: List["types.TodoTask"] = None,
|
||||
can_append: bool = False,
|
||||
can_complete: bool = False
|
||||
):
|
||||
super().__init__()
|
||||
|
||||
self.title = title
|
||||
self.entities = entities
|
||||
self.tasks = tasks
|
||||
self.can_append = can_append
|
||||
self.can_complete = can_complete
|
||||
|
||||
@staticmethod
|
||||
def _parse(
|
||||
client: "pyrogram.Client",
|
||||
todo: "raw.types.TodoList",
|
||||
users: Dict
|
||||
) -> "TodoList":
|
||||
todo_list = todo.todo
|
||||
completions = todo.completions
|
||||
entities = [types.MessageEntity._parse(client, entity, users) for entity in todo_list.title.entities]
|
||||
entities = types.List(filter(lambda x: x is not None, entities))
|
||||
tasks = [
|
||||
types.TodoTask._parse(client, task, users, completions)
|
||||
for task in todo_list.list
|
||||
] if todo_list.list else []
|
||||
return TodoList(
|
||||
title=todo_list.title.text,
|
||||
entities=entities,
|
||||
tasks=tasks,
|
||||
can_append=todo_list.others_can_append,
|
||||
can_complete=todo_list.others_can_complete
|
||||
)
|
||||
85
pyrogram/types/messages_and_media/todo_task.py
Normal file
85
pyrogram/types/messages_and_media/todo_task.py
Normal file
|
|
@ -0,0 +1,85 @@
|
|||
# Pyrofork - Telegram MTProto API Client Library for Python
|
||||
# Copyright (C) 2022-present Mayuri-Chan <https://github.com/Mayuri-Chan>
|
||||
#
|
||||
# This file is part of Pyrofork.
|
||||
#
|
||||
# Pyrofork is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Lesser General Public License as published
|
||||
# by the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# Pyrofork is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Lesser General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Lesser General Public License
|
||||
# along with Pyrofork. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
|
||||
from typing import List, Dict
|
||||
|
||||
import pyrogram
|
||||
from pyrogram import raw, types, utils
|
||||
from ..object import Object
|
||||
|
||||
|
||||
class TodoTask(Object):
|
||||
"""A task in a todo list.
|
||||
|
||||
Parameters:
|
||||
title (``str``):
|
||||
Title of the task.
|
||||
|
||||
entities (List of :obj:`~pyrogram.types.MessageEntity`):
|
||||
Entities in the title of the task.
|
||||
|
||||
is_completed (``bool``):
|
||||
True, if the task is completed.
|
||||
|
||||
completed_by (:obj:`~pyrogram.types.User`, *optional*):
|
||||
User who completed the task.
|
||||
|
||||
complete_date (:obj:`~datetime.datetime`, *optional*):
|
||||
Date when the task was completed.
|
||||
"""
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
id: int,
|
||||
title: str,
|
||||
entities: List["types.MessageEntity"],
|
||||
is_completed: bool,
|
||||
completed_by: "types.User" = None,
|
||||
complete_date: "pyrogram.types.datetime" = None
|
||||
):
|
||||
super().__init__()
|
||||
|
||||
self.id = id
|
||||
self.title = title
|
||||
self.entities = entities
|
||||
self.is_completed = is_completed
|
||||
self.completed_by = completed_by
|
||||
self.complete_date = complete_date
|
||||
|
||||
@staticmethod
|
||||
def _parse(
|
||||
client: "pyrogram.Client",
|
||||
todo_task: "raw.types.TodoList",
|
||||
users: Dict,
|
||||
completions: List["raw.types.TodoCompletion"] = None
|
||||
) -> "TodoTask":
|
||||
entities = [types.MessageEntity._parse(client, entity, users) for entity in todo_task.title.entities]
|
||||
entities = types.List(filter(lambda x: x is not None, entities))
|
||||
complete = {i.id: i for i in completions} if completions else {}
|
||||
todo_completion = complete.get(todo_task.id)
|
||||
completed_by = types.User._parse(client, users.get(getattr(todo_completion.completed_by, "user_id", None), None)) if todo_completion else None
|
||||
complete_date = utils.timestamp_to_datetime(todo_completion.date) if todo_completion else None
|
||||
return TodoTask(
|
||||
id=todo_task.id,
|
||||
title=todo_task.title.text,
|
||||
entities=entities,
|
||||
is_completed=True if todo_completion else False,
|
||||
completed_by=completed_by,
|
||||
complete_date=complete_date
|
||||
)
|
||||
45
pyrogram/types/messages_and_media/todo_tasks_added.py
Normal file
45
pyrogram/types/messages_and_media/todo_tasks_added.py
Normal file
|
|
@ -0,0 +1,45 @@
|
|||
# Pyrofork - Telegram MTProto API Client Library for Python
|
||||
# Copyright (C) 2022-present Mayuri-Chan <https://github.com/Mayuri-Chan>
|
||||
#
|
||||
# This file is part of Pyrofork.
|
||||
#
|
||||
# Pyrofork is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Lesser General Public License as published
|
||||
# by the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# Pyrofork is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Lesser General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Lesser General Public License
|
||||
# along with Pyrofork. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
import pyrogram
|
||||
|
||||
from pyrogram import raw, types
|
||||
from ..object import Object
|
||||
|
||||
|
||||
class TodoTasksAdded(Object):
|
||||
"""A todo task added to a todo list.
|
||||
|
||||
Parameters:
|
||||
task (:obj:`~pyrogram.types.TodoTask`):
|
||||
The added todo task.
|
||||
"""
|
||||
|
||||
def __init__(self, tasks: "types.TodoTask"):
|
||||
super().__init__()
|
||||
|
||||
self.tasks = tasks
|
||||
|
||||
@staticmethod
|
||||
def _parse(
|
||||
client: "pyrogram.Client",
|
||||
todo_task_added: "raw.types.MessageActionTodoAppendTasks"
|
||||
) -> "TodoTasksAdded":
|
||||
return TodoTasksAdded(
|
||||
tasks=[types.TodoTask._parse(client, task, {}, {}) for task in todo_task_added.list]
|
||||
)
|
||||
44
pyrogram/types/messages_and_media/todo_tasks_completed.py
Normal file
44
pyrogram/types/messages_and_media/todo_tasks_completed.py
Normal file
|
|
@ -0,0 +1,44 @@
|
|||
# Pyrofork - Telegram MTProto API Client Library for Python
|
||||
# Copyright (C) 2022-present Mayuri-Chan <https://github.com/Mayuri-Chan>
|
||||
#
|
||||
# This file is part of Pyrofork.
|
||||
#
|
||||
# Pyrofork is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Lesser General Public License as published
|
||||
# by the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# Pyrofork is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Lesser General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Lesser General Public License
|
||||
# along with Pyrofork. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
|
||||
from typing import List
|
||||
|
||||
from pyrogram import raw
|
||||
from ..object import Object
|
||||
|
||||
|
||||
class TodoTasksCompleted(Object):
|
||||
"""One or more todo task/s has been flag as complete.
|
||||
|
||||
Parameters:
|
||||
ids (List of ``int``):
|
||||
List of Unique identifier of the todo tasks.
|
||||
"""
|
||||
|
||||
def __init__(self, ids: List[int]):
|
||||
super().__init__()
|
||||
|
||||
self.ids = ids
|
||||
|
||||
@staticmethod
|
||||
def _parse(todo_completion: "raw.types.TodoCompletion") -> "TodoTasksCompleted":
|
||||
ids = [id for id in todo_completion.completed]
|
||||
return TodoTasksCompleted(
|
||||
ids=ids,
|
||||
)
|
||||
44
pyrogram/types/messages_and_media/todo_tasks_incompleted.py
Normal file
44
pyrogram/types/messages_and_media/todo_tasks_incompleted.py
Normal file
|
|
@ -0,0 +1,44 @@
|
|||
# Pyrofork - Telegram MTProto API Client Library for Python
|
||||
# Copyright (C) 2022-present Mayuri-Chan <https://github.com/Mayuri-Chan>
|
||||
#
|
||||
# This file is part of Pyrofork.
|
||||
#
|
||||
# Pyrofork is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Lesser General Public License as published
|
||||
# by the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# Pyrofork is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Lesser General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Lesser General Public License
|
||||
# along with Pyrofork. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
|
||||
from typing import List
|
||||
|
||||
from pyrogram import raw
|
||||
from ..object import Object
|
||||
|
||||
|
||||
class TodoTasksIncompleted(Object):
|
||||
"""One or more todo task/s has been flag as incomplete.
|
||||
|
||||
Parameters:
|
||||
ids (List of ``int``):
|
||||
List of Unique identifier of the todo tasks.
|
||||
"""
|
||||
|
||||
def __init__(self, ids: List[int]):
|
||||
super().__init__()
|
||||
|
||||
self.ids = ids
|
||||
|
||||
@staticmethod
|
||||
def _parse(todo_completion: "raw.types.TodoCompletion") -> "TodoTasksIncompleted":
|
||||
ids = [id for id in todo_completion.incompleted]
|
||||
return TodoTasksIncompleted(
|
||||
ids=ids,
|
||||
)
|
||||
|
|
@ -104,6 +104,10 @@ class Gift(Object):
|
|||
The number of gifts available for purchase.
|
||||
Returned only if is_limited is True.
|
||||
|
||||
resale_amount (``int``, *optional*):
|
||||
The number of gifts available for resale.
|
||||
Returned only if is_limited is True.
|
||||
|
||||
total_amount (``int``, *optional*):
|
||||
Total amount of gifts.
|
||||
Returned only if is_limited is True.
|
||||
|
|
@ -177,6 +181,7 @@ class Gift(Object):
|
|||
collectible_id: Optional[int] = None,
|
||||
attributes: Optional[List["types.GiftAttribute"]] = None,
|
||||
available_amount: Optional[int] = None,
|
||||
resale_amount: Optional[int] = None,
|
||||
total_amount: Optional[int] = None,
|
||||
can_upgrade: Optional[bool] = None,
|
||||
can_export_at: Optional[datetime] = None,
|
||||
|
|
@ -216,6 +221,7 @@ class Gift(Object):
|
|||
self.collectible_id = collectible_id
|
||||
self.attributes = attributes
|
||||
self.available_amount = available_amount
|
||||
self.resale_amount = resale_amount
|
||||
self.total_amount = total_amount
|
||||
self.can_upgrade = can_upgrade
|
||||
self.can_export_at = can_export_at
|
||||
|
|
@ -254,6 +260,7 @@ class Gift(Object):
|
|||
convert_price=star_gift.convert_stars,
|
||||
upgrade_price=getattr(star_gift, "upgrade_stars", None),
|
||||
available_amount=getattr(star_gift, "availability_remains", None),
|
||||
resale_amount=getattr(star_gift, "availability_resale", None),
|
||||
total_amount=getattr(star_gift, "availability_total", None),
|
||||
is_limited=getattr(star_gift, "limited", None),
|
||||
is_sold_out=getattr(star_gift, "sold_out", None),
|
||||
|
|
@ -281,6 +288,7 @@ class Gift(Object):
|
|||
[await types.GiftAttribute._parse(client, attr, users) for attr in star_gift.attributes]
|
||||
) or None,
|
||||
available_amount=getattr(star_gift, "availability_issued", None),
|
||||
resale_amount=getattr(star_gift, "availability_resale", None),
|
||||
total_amount=getattr(star_gift, "availability_total", None),
|
||||
owner=(
|
||||
types.Chat._parse_chat(client, users.get(owner_id) or
|
||||
|
|
|
|||
|
|
@ -46,7 +46,7 @@ class Identifier:
|
|||
# Compare each property of other with the corresponding property in self
|
||||
# If the property in self is None, the property in other can be anything
|
||||
# If the property in self is not None, the property in other must be the same
|
||||
for field in self.__annotations__:
|
||||
for field in self.__class__.__annotations__:
|
||||
pattern_value = getattr(self, field)
|
||||
update_value = getattr(update, field)
|
||||
|
||||
|
|
@ -67,7 +67,7 @@ class Identifier:
|
|||
def count_populated(self):
|
||||
non_null_count = 0
|
||||
|
||||
for attr in self.__annotations__:
|
||||
for attr in self.__class__.__annotations__:
|
||||
if getattr(self, attr) is not None:
|
||||
non_null_count += 1
|
||||
|
||||
|
|
|
|||
|
|
@ -42,6 +42,7 @@ from .chat_privileges import ChatPrivileges
|
|||
from .chat_reactions import ChatReactions
|
||||
from .dialog import Dialog
|
||||
from .emoji_status import EmojiStatus
|
||||
from .exported_folder_link import ExportedFolderLink
|
||||
from .folder import Folder
|
||||
from .group_call_member import GroupCallMember
|
||||
from .invite_link_importer import InviteLinkImporter
|
||||
|
|
@ -107,6 +108,7 @@ __all__ = [
|
|||
"ChatPrivileges",
|
||||
"ChatJoiner",
|
||||
"EmojiStatus",
|
||||
"ExportedFolderLink",
|
||||
"GroupCallMember",
|
||||
"ChatReactions"
|
||||
]
|
||||
|
|
|
|||
|
|
@ -476,9 +476,9 @@ class Chat(Object):
|
|||
users: Dict[int, "raw.types.User"],
|
||||
chats: Dict[int, "raw.types.Chat"]
|
||||
) -> "Chat":
|
||||
if isinstance(peer, raw.types.PeerUser):
|
||||
if isinstance(peer, raw.types.PeerUser) or isinstance(peer, raw.types.InputPeerUser):
|
||||
return Chat._parse_user_chat(client, users[peer.user_id])
|
||||
elif isinstance(peer, raw.types.PeerChat):
|
||||
elif isinstance(peer, raw.types.PeerChat) or isinstance(peer, raw.types.InputPeerChat):
|
||||
return Chat._parse_chat_chat(client, chats[peer.chat_id])
|
||||
else:
|
||||
return Chat._parse_channel_chat(client, chats[peer.channel_id])
|
||||
|
|
|
|||
|
|
@ -81,6 +81,9 @@ class ChatPrivileges(Object):
|
|||
|
||||
is_anonymous (``bool``, *optional*):
|
||||
True, if the user's presence in the chat is hidden.
|
||||
|
||||
can_manage_direct_messages (``bool``, *optional*):
|
||||
True, if the administrator can manage direct messages sent to the chat.
|
||||
"""
|
||||
|
||||
def __init__(
|
||||
|
|
@ -100,7 +103,8 @@ class ChatPrivileges(Object):
|
|||
can_post_stories: bool = False, # Channels only
|
||||
can_edit_stories: bool = False, # Channels only
|
||||
can_delete_stories: bool = False, # Channels only
|
||||
is_anonymous: bool = False
|
||||
is_anonymous: bool = False,
|
||||
can_manage_direct_messages: bool = False
|
||||
):
|
||||
super().__init__(None)
|
||||
|
||||
|
|
@ -119,6 +123,7 @@ class ChatPrivileges(Object):
|
|||
self.can_edit_stories: bool = can_edit_stories
|
||||
self.can_delete_stories: bool = can_delete_stories
|
||||
self.is_anonymous: bool = is_anonymous
|
||||
self.can_manage_direct_messages: bool = can_manage_direct_messages
|
||||
|
||||
@staticmethod
|
||||
def _parse(admin_rights: "raw.base.ChatAdminRights") -> "ChatPrivileges":
|
||||
|
|
@ -137,5 +142,6 @@ class ChatPrivileges(Object):
|
|||
can_post_stories=admin_rights.post_stories,
|
||||
can_edit_stories=admin_rights.edit_stories,
|
||||
can_delete_stories=admin_rights.delete_stories,
|
||||
is_anonymous=admin_rights.anonymous
|
||||
is_anonymous=admin_rights.anonymous,
|
||||
can_manage_direct_messages=admin_rights.manage_direct_messages
|
||||
)
|
||||
|
|
|
|||
55
pyrogram/types/user_and_chats/exported_folder_link.py
Normal file
55
pyrogram/types/user_and_chats/exported_folder_link.py
Normal file
|
|
@ -0,0 +1,55 @@
|
|||
# Pyrofork - Telegram MTProto API Client Library for Python
|
||||
# Copyright (C) 2022-present Mayuri-Chan <https://github.com/Mayuri-Chan>
|
||||
#
|
||||
# This file is part of Pyrogram.
|
||||
#
|
||||
# Pyrogram is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Lesser General Public License as published
|
||||
# by the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# Pyrogram is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Lesser General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Lesser General Public License
|
||||
# along with Pyrogram. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
from typing import List, Union
|
||||
|
||||
import pyrogram
|
||||
from pyrogram import enums
|
||||
from pyrogram import raw
|
||||
from pyrogram import types
|
||||
from pyrogram import utils
|
||||
from ..object import Object
|
||||
|
||||
|
||||
class ExportedFolderLink(Object):
|
||||
"""Describes an exported chat folder link.
|
||||
|
||||
Parameters:
|
||||
link (``str``):
|
||||
The link itself.
|
||||
|
||||
title (``str``, *optional*):
|
||||
Title of the folder.
|
||||
"""
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
link: str,
|
||||
title: str = None
|
||||
):
|
||||
super().__init__(None)
|
||||
|
||||
self.link = link
|
||||
self.title = title
|
||||
|
||||
@staticmethod
|
||||
def _parse(exported_folder_link: "raw.base.ExportedChatFolderLink") -> "ExportedFolderLink":
|
||||
return ExportedFolderLink(
|
||||
link=getattr(exported_folder_link, "link", None),
|
||||
title=getattr(exported_folder_link, "title", None)
|
||||
)
|
||||
|
|
@ -37,6 +37,9 @@ class Folder(Object):
|
|||
title (``str``):
|
||||
The folder title.
|
||||
|
||||
title_entities (List of :obj:`~pyrogram.types.MessageEntity`, *optional*):
|
||||
A list of entities in the folder title.
|
||||
|
||||
included_chats (List of :obj:`~pyrogram.types.Chat`, *optional*):
|
||||
A list of included chats in folder.
|
||||
|
||||
|
|
@ -83,6 +86,7 @@ class Folder(Object):
|
|||
client: "pyrogram.Client" = None,
|
||||
id: int,
|
||||
title: str,
|
||||
title_entities: List["types.MessageEntity"] = None,
|
||||
included_chats: List["types.Chat"] = None,
|
||||
excluded_chats: List["types.Chat"] = None,
|
||||
pinned_chats: List["types.Chat"] = None,
|
||||
|
|
@ -102,6 +106,7 @@ class Folder(Object):
|
|||
|
||||
self.id = id
|
||||
self.title = title
|
||||
self.title_entities = title_entities
|
||||
self.included_chats = included_chats
|
||||
self.excluded_chats = excluded_chats
|
||||
self.pinned_chats = pinned_chats
|
||||
|
|
@ -122,6 +127,9 @@ class Folder(Object):
|
|||
included_chats = []
|
||||
excluded_chats = []
|
||||
pinned_chats = []
|
||||
title = folder.title
|
||||
title_text = title.text
|
||||
title_entities = [types.MessageEntity._parse(client, entity) for entity in title.entities] if title.entities else None
|
||||
|
||||
for peer in folder.include_peers:
|
||||
try:
|
||||
|
|
@ -144,7 +152,8 @@ class Folder(Object):
|
|||
|
||||
return Folder(
|
||||
id=folder.id,
|
||||
title=folder.title,
|
||||
title=title_text,
|
||||
title_entities=title_entities,
|
||||
included_chats=types.List(included_chats) or None,
|
||||
excluded_chats=types.List(excluded_chats) or None,
|
||||
pinned_chats=types.List(pinned_chats) or None,
|
||||
|
|
|
|||
Loading…
Reference in a new issue