zlapi: Zalo API for Python
Project description
zlapi
- Zalo API (Unofficial) for Python
Language
- Sẽ hỗ trợ tài liệu Tiếng Việt sớm nhất có thể. Sài tạm google dịch nhé :)
What is zlapi
?
A powerful and efficient library to interact with Zalo Website. This is not an official API, Zalo has that over here for chat bots. This library differs by using a normal Zalo account instead (More flexible).
zlapi
currently support:
- Custom style for message.
- Sending many types of messages, with files, stickers, mentions, etc.
- Fetching messages, threads and users info.
- Creating groups, setting the group, creating polls, etc.
- Listening for, an reacting to messages and other events in real-time.
- And there are many other things.
async
/await
(Updated).
Essentially, everything you need to make an amazing Zalo Bot!
Caveats
zlapi
works by imitating what the browser does, and thereby tricking Zalo into thinking it's accessing the website normally.
However, there's a catch! Using this library may not comply with Zalo's Terms Of Service, so be! We are not responsible if your account gets banned or disabled!
What's New?
This is an updated version for zlapi
to improve features and fix bugs (v1.0.2)
Improvements
- Various typo fixes and doc improvements.
- Add simple code style for module. Like
telebot
,discord
, ... - Add
async
/await
for module. - Add
websocket
type to listen function. - Add
run forever
for listen function. - Add send
gif
,video
,voice
,business card
,multi image
. - Add
Block/Unblock
members when kicked out of group. - Add
Pin/Unpin
message in group. - Add
On Event
function to handle group and user events. - Add
Parse Mode
for Message.
Bugfixes
-
Fixed bug of the
replyMessage
function, only replying to normal messages. -
Fixed payload in function
addUsersToGroup
.
Installation
pip install zlapi
If you don't have pip, this guide can guide you through the process.
You can also install directly from source, provided you have pip>=19.0
:
pip install git+https://github.com/Its-VrxxDev/zlapi.git
How to get IMEI and Cookies?
Download Extension
- Click Here to download the extension support getting IMEI & Cookies more conveniently.
Extension Usage Tutorial
- Enable the extension downloaded above.
- Go to https://chat.zalo.me, Sign in to your account.
- After successfully logging in, go back to extension and get IMEI, Cookies.
[!TIP] If you have opened the website
chat.zalo.me
but the extension does not have IMEI & Cookies, please clickRefresh Page
.
Windows
Android
- Use
kiwibrowser
instead ofchrome
to be able to use the extension.- If you are redirect when accessing
https://chat.zalo.me
. Watch this video
Basic Usage
Login Account Using Cookies
Normal
/Async
code style
# > Normal
# from zlapi import ZaloAPI
# > Async
# from zlapi.Async import ZaloAPI
from zlapi import ZaloAPI
from zlapi.models import *
imei = "<imei>"
cookies = {} # Cookies Dict
bot = ZaloAPI("<phone>", "<password>", imei=imei, session_cookies=cookies)
Simple
code style
from zlapi.simple import ZaloAPI
from zlapi.models import *
imei = "<imei>"
cookies = {} # Cookies Dict
bot = ZaloAPI("</>", "</>", imei, cookies, prefix="<your bot prefix>")
Listen Message, Event, ...
- You can enable thread mode for On Message function (work with
requests
type) withthread=True
.
bot.listen(thread=True)
- You can change the listen mode with
type="<listen type>"
. Current module supportwebsocket
,requests
type (default type is websocket)
bot.listen(type="<listen type>")
- If you don't want to have to rerun the bot script when something goes wrong in the listen function you can use
run_forever=True
.
bot.listen(run_forever=True)
Normal
/Async
code style
# > Normal
# from zlapi import ZaloAPI
# > Async
# from zlapi.Async import ZaloAPI
from zlapi import ZaloAPI
from zlapi.models import *
imei = "<imei>"
cookies = {} # Cookies Dict
bot = ZaloAPI("<phone>", "<password>", imei=imei, session_cookies=cookies)
# client.listen(type="...")
bot.listen()
Simple
code style
from zlapi.simple import ZaloAPI
from zlapi.models import *
imei = "<imei>"
cookies = {} # Cookies Dict
bot = ZaloAPI("</>", "</>", imei, cookies, prefix="<your bot prefix>")
bot.listen()
Custom On Message Function
onMessage
function will be called when receiving a message from listen
function. So we can handle that message here.
Normal
code style
from zlapi import ZaloAPI
from zlapi.models import *
imei = "<imei>"
cookies = {} # Cookies Dict
class CustomBot(ZaloAPI):
def onMessage(self, mid, author_id, message, message_object, thread_id, thread_type):
# Handle Message Here
pass
bot = CustomBot("<phone>", "<password>", imei=imei, session_cookies=cookies)
bot.listen()
Async
code style
from zlapi.Async import ZaloAPI
from zlapi.models import *
imei = "<imei>"
cookies = {} # Cookies Dict
class CustomBot(ZaloAPI):
async def onMessage(self, mid, author_id, message, message_object, thread_id, thread_type):
# Handle Message Here
pass
bot = CustomBot("<phone>", "<password>", imei=imei, session_cookies=cookies)
bot.listen()
Simple
code style
from zlapi.simple import ZaloAPI
from zlapi.models import *
imei = "<imei>"
cookies = {} # Cookies Dict
bot = ZaloAPI("</>", "</>", imei, cookies, prefix="<bot prefix>")
@bot.event
async def on_message(ctx):
# Handle Message Here
pass
bot.listen()
Example Handle Message
Normal code style
from zlapi import ZaloAPI
from zlapi.models import *
imei = "<imei>"
cookies = {} # Cookies Dict
class CustomBot(ZaloAPI):
def onMessage(self, mid, author_id, message, message_object, thread_id, thread_type):
if not isinstance(message, str):
return
if message == ".hi":
print(f"{author_id} sent message .hi")
bot = CustomBot("<phone>", "<password>", imei=imei, session_cookies=cookies)
bot.listen()
- If the message is not
string
do not process this message.- If the message is
.hi
will print author id of message to terminal.
Async code style
from zlapi.Async import ZaloAPI
from zlapi.models import *
imei = "<imei>"
cookies = {} # Cookies Dict
class CustomBot(ZaloAPI):
async def onMessage(self, mid, author_id, message, message_object, thread_id, thread_type):
if not isinstance(message, str):
return
if message == ".hi":
print(f"{author_id} sent message .hi")
bot = CustomBot("<phone>", "<password>", imei=imei, session_cookies=cookies)
bot.listen()
- If the message is not
string
do not process this message.- If the message is
.hi
will print author id of message to terminal.
Simple code style
-
Method 1
from zlapi.simple import ZaloAPI from zlapi.models import * imei = "<imei>" cookies = {} # Cookies Dict bot = ZaloAPI("</>", "</>", imei, cookies, prefix="<bot prefix>") @bot.event async def on_message(ctx): if ctx.message == ".hi": print(f"{ctx.author_id} sent message .hi") bot.listen()
-
Method 2
from zlapi.simple import ZaloAPI from zlapi.models import * imei = "<imei>" cookies = {} # Cookies Dict bot = ZaloAPI("</>", "</>", imei, cookies, prefix=".") @bot.register_handler(commands=["hi"]) async def handle_hi(ctx): print(f"{ctx.author_id} sent message .hi") bot.listen()
@bot.register_handler(commands=["hi"])
is a decoration class used to register a command. When an incoming message matches the bot prefix + registered commands, the message will be processed.
Fetch Account Information
This function will get the account information you are using in zlapi
.
Normal code style
-
Outside Module Function
bot.fetchAccountInfo()
-
Inside Module Function
self.fetchAccountInfo()
Async code style
-
Outside Module Function
asyncio.run(bot.fetchAccountInfo())
-
Inside Module Function (You can use
await
instead.)await self.fetchAccountInfo()
Simple code style
-
Outside Module Function
asyncio.run(bot.fetch_account_info())
-
Inside Module Function (You can use
await
instead.)await bot.fetch_account_info()
Fetch Phone Number
This function will get user information using that user phone number.
[!NOTE] Can't get information of hidden phone number or locked account
Normal code style
-
Outside Module Function
bot.fetchPhoneNumber("<phone number>")
-
Inside Module Function
self.fetchPhoneNumber("<phone number>")
Async code style
-
Outside Module Function
asyncio.run(bot.fetchPhoneNumber("<phone number>"))
-
Inside Module Function (You can use
await
instead.)await self.fetchPhoneNumber("<phone number>")
Simple code style
-
Outside Module Function
asyncio.run(bot.fetch_phone_number("<phone number>"))
-
Inside Module Function (You can use
await
instead.)await bot.fetch_phone_number("<phone number>")
Fetch User Info
This function will get user information using that user ID.
- In
Normal
/Async
code style you can get user id with author_id argument- In
Simple
code style you can get user id with ctx.author_id argument- Or you can use user id if you already have one
Normal code style
-
Outside Module Function
bot.fetchUserInfo(<user id>)
-
Inside Module Function
self.fetchUserInfo(<user id>)
Async code style
-
Outside Module Function
asyncio.run(bot.fetchUserInfo(<user id>))
-
Inside Module Function (You can use
await
instead.)await self.fetchUserInfo(<user id>)
Simple code style
-
Outside Module Function
asyncio.run(bot.fetch_user_info(<user id>))
-
Inside Module Function (You can use
await
instead.)await bot.fetch_user_info(<user id>)
Fetch Group Info
This function will get group information using that group ID.
- In
Normal
/Async
code style you can get user id with thread_id argument- In
Simple
code style you can get user id with ctx.thread_id argument- Or you can use group id if you already have one
Normal code style
-
Outside Module Function
bot.fetchGroupInfo(<group id>)
-
Inside Module Function
self.fetchGroupInfo(<group id>)
Async code style
-
Outside Module Function
asyncio.run(bot.fetchGroupInfo(<group id>))
-
Inside Module Function (You can use
await
instead.)await self.fetchGroupInfo(<group id>)
Simple code style
-
Outside Module Function
asyncio.run(bot.fetch_group_info(<group id>))
-
Inside Module Function (You can use
await
instead.)await bot.fetch_group_info(<user id>)
Fetch All Friends
This function will get all the friends information of the account currently using the zlapi
.
Normal code style
-
Outside Module Function
bot.fetchAllFriends()
-
Inside Module Function
self.fetchAllFriends()
Async code style
-
Outside Module Function
asyncio.run(bot.fetchAllFriends())
-
Inside Module Function (You can use
await
instead.)await self.fetchAllFriends()
Simple code style
-
Outside Module Function
asyncio.run(bot.fetch_all_friends())
-
Inside Module Function (You can use
await
instead.)await bot.fetch_all_friends()
Fetch All Groups
This function will get all the groups id of the account currently using the zlapi
.
Normal code style
-
Outside Module Function
bot.fetchAllGroups()
-
Inside Module Function
self.fetchAllGroups()
Async code style
-
Outside Module Function
asyncio.run(bot.fetchAllGroups())
-
Inside Module Function (You can use
await
instead.)await self.fetchAllGroups()
Simple code style
-
Outside Module Function
asyncio.run(bot.fetch_all_groups())
-
Inside Module Function (You can use
await
instead.)await bot.fetch_all_groups()
Change Account Setting
This function will change setting of the account currently using the zlapi
.
- Args:
- name (str): The new account name
- dob (str): Date of birth wants to change (format: year-month-day)
- gender (int | str): Gender wants to change (0 = Male, 1 = Female)
Normal code style
-
Outside Module Function
bot.changeAccountSetting(<name>, <dob>, <gender>)
-
Inside Module Function
self.changeAccountSetting(<name>, <dob>, <gender>)
Async code style
-
Outside Module Function
asyncio.run(bot.changeAccountSetting(<name>, <dob>, <gender>))
-
Inside Module Function (You can use
await
instead.)await self.changeAccountSetting(<name>, <dob>, <gender>)
Simple code style
-
Outside Module Function
asyncio.run(bot.change_account_setting(<name>, <dob>, <gender>))
-
Inside Module Function (You can use
await
instead.)await bot.change_account_setting(<name>, <dob>, <gender>)
Change Account Avatar
This function will upload/change avatar of the account currently using the zlapi
.
- Args:
- filePath (str): A path to the image to upload/change avatar
- size (int): Avatar image size (default = auto)
- width (int): Width of avatar image
- height (int): height of avatar image
- language (int | str): Zalo Website language ? (idk)
Normal code style
-
Outside Module Function
bot.changeAccountAvatar(<filePath>)
-
Inside Module Function
self.changeAccountAvatar(<filePath>)
Async code style
-
Outside Module Function
asyncio.run(bot.changeAccountAvatar(<filePath>))
-
Inside Module Function (You can use
await
instead.)await self.changeAccountAvatar(<filePath>)
Simple code style
-
Outside Module Function
asyncio.run(bot.change_account_avatar(<filePath>))
-
Inside Module Function (You can use
await
instead.)await bot.change_account_avatar(<filePath>)
Send Friend Request
This function will send friend request to a user by ID.
- Args:
- userId (int | str): User ID to send friend request
- msg (str): Friend request message
- language (str): Response language or Zalo interface language
Normal code style
-
Outside Module Function
bot.sendFriendRequest(<userId>, <msg>)
-
Inside Module Function
self.sendFriendRequest(<userId>, <msg>)
Async code style
-
Outside Module Function
asyncio.run(bot.sendFriendRequest(<userId>, <msg>))
-
Inside Module Function (You can use
await
instead.)await self.sendFriendRequest(<userId>, <msg>)
Simple code style
-
Outside Module Function
asyncio.run(bot.send_friend_request(<userId>, <msg>))
-
Inside Module Function (You can use
await
instead.)await bot.send_friend_request(<userId>, <msg>)
Accept Friend Request
This function will accept friend request from user by ID.
- Args:
- userId (int | str): User ID to accept friend request
- language (str): Response language or Zalo interface language
Normal code style
-
Outside Module Function
bot.acceptFriendRequest(<userId>)
-
Inside Module Function
self.acceptFriendRequest(<userId>)
Async code style
-
Outside Module Function
asyncio.run(bot.acceptFriendRequest(<userId>))
-
Inside Module Function (You can use
await
instead.)await self.acceptFriendRequest(<userId>)
Simple code style
-
Outside Module Function
asyncio.run(bot.accept_friend_request(<userId>))
-
Inside Module Function (You can use
await
instead.)await bot.accept_friend_request(<userId>)
Block View Feed
This function will Block/Unblock friend view feed by ID.
- Args:
- userId (int | str): User ID to block/unblock view feed
- isBlockFeed (int): Block/Unblock friend view feed (1 = True | 0 = False)
Normal code style
-
Outside Module Function
bot.blockViewFeed(<userId>, <isBlockFeed>)
-
Inside Module Function
self.blockViewFeed(<userId>, <isBlockFeed>)
Async code style
-
Outside Module Function
asyncio.run(bot.blockViewFeed(<userId>, <isBlockFeed>))
-
Inside Module Function (You can use
await
instead.)await self.blockViewFeed(<userId>, <isBlockFeed>)
Simple code style
-
Outside Module Function
asyncio.run(bot.block_view_feed(<userId>, <isBlockFeed>))
-
Inside Module Function (You can use
await
instead.)await bot.block_view_feed(<userId>, <isBlockFeed>)
Block User
This function will block user by ID.
- Args:
- userId (int | str): User ID to block
Normal code style
-
Outside Module Function
bot.blockUser(<userId>)
-
Inside Module Function
self.blockUser(<userId>)
Async code style
-
Outside Module Function
asyncio.run(bot.blockUser(<userId>))
-
Inside Module Function (You can use
await
instead.)await self.blockUser(<userId>)
Simple code style
-
Outside Module Function
asyncio.run(bot.block_user(<userId>))
-
Inside Module Function (You can use
await
instead.)await bot.block_user(<userId>)
Unblock User
This function will unblock user by ID.
- Args:
- userId (int | str): User ID to unblock
Normal code style
-
Outside Module Function
bot.unblockUser(<userId>)
-
Inside Module Function
self.unblockUser(<userId>)
Async code style
-
Outside Module Function
asyncio.run(bot.unblockUser(<userId>))
-
Inside Module Function (You can use
await
instead.)await self.unblockUser(<userId>)
Simple code style
-
Outside Module Function
asyncio.run(bot.unblock_user(<userId>))
-
Inside Module Function (You can use
await
instead.)await bot.unblock_user(<userId>)
Create Group
This function will Create a new group.
- Args:
- name (str): The new group name
- description (str): Description of the new group
- members (str | list): List/String member IDs add to new group
- nameChanged (int - auto): Will use default name if disabled (0), else (1)
- createLink (int - default): Create a group link? Default = 1 (True)
Normal code style
-
Outside Module Function
bot.createGroup(<name>, <description>, <members>)
-
Inside Module Function
self.createGroup(<name>, <description>, <members>)
Async code style
-
Outside Module Function
asyncio.run(bot.createGroup(<name>, <description>, <members>))
-
Inside Module Function (You can use
await
instead.)await self.createGroup(<name>, <description>, <members>)
Simple code style
-
Outside Module Function
asyncio.run(bot.create_group(<name>, <description>, <members>))
-
Inside Module Function (You can use
await
instead.)await bot.create_group(<name>, <description>, <members>)
Change Group Avatar
This function will Upload/Change group avatar by ID.
- Args:
- filePath (str): A path to the image to upload/change avatar
- groupId (int | str): Group ID to upload/change avatar
Normal code style
-
Outside Module Function
bot.changeGroupAvatar(<filePath>, <groupId>)
-
Inside Module Function
self.changeGroupAvatar(<filePath>, <groupId>)
Async code style
-
Outside Module Function
asyncio.run(bot.changeGroupAvatar(<filePath>, <groupId>))
-
Inside Module Function (You can use
await
instead.)await self.changeGroupAvatar(<filePath>, <groupId>)
Simple code style
-
Outside Module Function
asyncio.run(bot.change_group_avatar(<filePath>, <groupId>))
-
Inside Module Function (You can use
await
instead.)await bot.change_group_avatar(<filePath>, <groupId>)
[!NOTE] Client must be the Owner of the group (If the group does not allow members to upload/change)
Change Group Name
This function will Set/Change group name by ID.
- Args:
- groupName (str): Group name to change
- groupId (int | str): Group ID to change name
Normal code style
-
Outside Module Function
bot.changeGroupName(<groupName>, <groupId>)
-
Inside Module Function
self.changeGroupName(<groupName>, <groupId>)
Async code style
-
Outside Module Function
asyncio.run(bot.changeGroupName(<groupName>, <groupId>))
-
Inside Module Function (You can use
await
instead.)await self.changeGroupName(<groupName>, <groupId>)
Simple code style
-
Outside Module Function
asyncio.run(bot.change_group_name(<groupName>, <groupId>))
-
Inside Module Function (You can use
await
instead.)await bot.change_group_name(<groupName>, <groupId>)
[!NOTE] Client must be the Owner of the group (If the group does not allow members to upload/change)
Change Group Setting
This function will Update group settings by ID.
- Args:
groupId (int | str): Group ID to update settings
defaultMode (str): Default mode of settings
- default: Group default settings
- anti-raid: Group default settings for anti-raid
**kwargs: Group settings kwargs, Value: (1 = True, 0 = False)
- blockName: Không cho phép user đổi tên & ảnh đại diện nhóm
- signAdminMsg: Đánh dấu tin nhắn từ chủ/phó nhóm
- addMemberOnly: Chỉ thêm members (Khi tắt link tham gia nhóm)
- setTopicOnly: Cho phép members ghim (tin nhắn, ghi chú, bình chọn)
- enableMsgHistory: Cho phép new members đọc tin nhắn gần nhất
- lockCreatePost: Không cho phép members tạo ghi chú, nhắc hẹn
- lockCreatePoll: Không cho phép members tạo bình chọn
- joinAppr: Chế độ phê duyệt thành viên
- bannFeature: Default (No description)
- dirtyMedia: Default (No description)
- banDuration: Default (No description)
- lockSendMsg: Không cho phép members gửi tin nhắn
- lockViewMember: Không cho phép members xem thành viên nhóm
- blocked_members: Danh sách members bị chặn
Normal code style
-
Outside Module Function
bot.changeGroupSetting(<groupId>, **kwargs)
-
Inside Module Function
self.changeGroupSetting(<groupId>, **kwargs)
Async code style
-
Outside Module Function
asyncio.run(bot.changeGroupSetting(<groupId>, **kwargs))
-
Inside Module Function (You can use
await
instead.)await self.changeGroupSetting(<groupId>, **kwargs)
Simple code style
-
Outside Module Function
asyncio.run(bot.change_group_setting(<groupId>, **kwargs))
-
Inside Module Function (You can use
await
instead.)await bot.change_group_setting(<groupId>, **kwargs)
[!WARNING] Other settings will default value if not set. See
defaultMode
Change Group Owner
This function will Change group owner by ID.
- Args:
- newAdminId (int | str): members ID to changer owner
- groupId (int | str): ID of the group to changer owner
Normal code style
-
Outside Module Function
bot.changeGroupOwner(<newAdminId>, <groupId>)
-
Inside Module Function
self.changeGroupOwner(<newAdminId>, <groupId>)
Async code style
-
Outside Module Function
asyncio.run(bot.changeGroupOwner(<newAdminId>, <groupId>))
-
Inside Module Function (You can use
await
instead.)await self.changeGroupOwner(<newAdminId>, <groupId>)
Simple code style
-
Outside Module Function
asyncio.run(bot.change_group_owner(<newAdminId>, <groupId>))
-
Inside Module Function (You can use
await
instead.)await bot.change_group_owner(<newAdminId>, <groupId>)
[!NOTE] Client must be the Owner of the group.
Add Users To Group
This function will Add friends/users to a group.
- Args:
- user_ids (str | list): One or more friend/user IDs to add
- groupId (int | str): Group ID to add friend/user to
Normal code style
-
Outside Module Function
bot.addUsersToGroup(<user_ids>, <groupId>)
-
Inside Module Function
self.addUsersToGroup(<user_ids>, <groupId>)
Async code style
-
Outside Module Function
asyncio.run(bot.addUsersToGroup(<user_ids>, <groupId>))
-
Inside Module Function (You can use
await
instead.)await self.addUsersToGroup(<user_ids>, <groupId>)
Simple code style
-
Outside Module Function
asyncio.run(bot.add_users_to_group(<user_ids>, <groupId>))
-
Inside Module Function (You can use
await
instead.)await bot.add_users_to_group(<user_ids>, <groupId>)
Kick Users In Group
This function will Kickout members in group by ID.
- Args:
- members (str | list): One or More member IDs to kickout
- groupId (int | str): Group ID to kick member from
Normal code style
-
Outside Module Function
bot.kickUsersInGroup(<members>, <groupId>)
-
Inside Module Function
self.kickUsersInGroup(<members>, <groupId>)
Async code style
-
Outside Module Function
asyncio.run(bot.kickUsersInGroup(<members>, <groupId>))
-
Inside Module Function (You can use
await
instead.)await self.kickUsersInGroup(<members>, <groupId>)
Simple code style
-
Outside Module Function
asyncio.run(bot.kick_users_in_group(<members>, <groupId>))
-
Inside Module Function (You can use
await
instead.)await bot.kick_users_in_group(<members>, <groupId>)
[!NOTE] Client must be the Owner of the group.
Block Users In Group
This function will Blocked members in group by ID.
- Args:
- members (str | list): One or More member IDs to block
- groupId (int | str): Group ID to block member from
Normal code style
-
Outside Module Function
bot.blockUsersInGroup(<members>, <groupId>)
-
Inside Module Function
self.blockUsersInGroup(<members>, <groupId>)
Async code style
-
Outside Module Function
asyncio.run(bot.blockUsersInGroup(<members>, <groupId>))
-
Inside Module Function (You can use
await
instead.)await self.blockUsersInGroup(<members>, <groupId>)
Simple code style
-
Outside Module Function
asyncio.run(bot.block_users_in_group(<members>, <groupId>))
-
Inside Module Function (You can use
await
instead.)await bot.block_users_in_group(<members>, <groupId>)
[!NOTE] Client must be the Owner of the group.
Unblock Users In Group
This function will Unblock members in group by ID.
- Args:
- members (str | list): One or More member IDs to unblock
- groupId (int | str): Group ID to unblock member from
Normal code style
-
Outside Module Function
bot.unblockUsersInGroup(<members>, <groupId>)
-
Inside Module Function
self.unblockUsersInGroup(<members>, <groupId>)
Async code style
-
Outside Module Function
asyncio.run(bot.unblockUsersInGroup(<members>, <groupId>))
-
Inside Module Function (You can use
await
instead.)await self.unblockUsersInGroup(<members>, <groupId>)
Simple code style
-
Outside Module Function
asyncio.run(bot.unblock_users_in_group(<members>, <groupId>))
-
Inside Module Function (You can use
await
instead.)await bot.unblock_users_in_group(<members>, <groupId>)
[!NOTE] Client must be the Owner of the group.
Add Group Admins
This function will Add admins to the group by ID.
- Args:
- members (str | list): One or More member IDs to add
- groupId (int | str): Group ID to add admins
Normal code style
-
Outside Module Function
bot.addGroupAdmins(<members>, <groupId>)
-
Inside Module Function
self.addGroupAdmins(<members>, <groupId>)
Async code style
-
Outside Module Function
asyncio.run(bot.addGroupAdmins(<members>, <groupId>))
-
Inside Module Function (You can use
await
instead.)await self.addGroupAdmins(<members>, <groupId>)
Simple code style
-
Outside Module Function
asyncio.run(bot.add_group_admins(<members>, <groupId>))
-
Inside Module Function (You can use
await
instead.)await bot.add_group_admins(<members>, <groupId>)
[!NOTE] Client must be the Owner of the group.
Remove Group Admins
This function will Remove admins in the group by ID.
- Args:
- members (str | list): One or More admin IDs to remove
- groupId (int | str): Group ID to remove admins
Normal code style
-
Outside Module Function
bot.removeGroupAdmins(<members>, <groupId>)
-
Inside Module Function
self.removeGroupAdmins(<members>, <groupId>)
Async code style
-
Outside Module Function
asyncio.run(bot.removeGroupAdmins(<members>, <groupId>))
-
Inside Module Function (You can use
await
instead.)await self.removeGroupAdmins(<members>, <groupId>)
Simple code style
-
Outside Module Function
asyncio.run(bot.remove_group_admins(<members>, <groupId>))
-
Inside Module Function (You can use
await
instead.)await bot.remove_group_admins(<members>, <groupId>)
[!NOTE] Client must be the Owner of the group.
Pin Group Message
This function will Pin message in group by ID.
- Args:
- pinMsg (Message): Message Object to pin
- groupId (int | str): Group ID to pin message
Normal code style
-
Outside Module Function
bot.pinGroupMsg(<pinMsg>, <groupId>)
-
Inside Module Function
self.pinGroupMsg(<pinMsg>, <groupId>)
Async code style
-
Outside Module Function
asyncio.run(bot.pinGroupMsg(<pinMsg>, <groupId>))
-
Inside Module Function (You can use
await
instead.)await self.pinGroupMsg(<pinMsg>, <groupId>)
Simple code style
-
Outside Module Function
asyncio.run(bot.pin_group_msg(<pinMsg>, <groupId>))
-
Inside Module Function (You can use
await
instead.)await bot.pin_group_msg(<pinMsg>, <groupId>)
Unpin Group Message
This function will Unpin message in group by ID.
- Args:
- pinId (int | str): Pin ID to unpin
- pinTime (int): Pin start time
- groupId (int | str): Group ID to unpin message
Normal code style
-
Outside Module Function
bot.unpinGroupMsg(<pinId>, <pinTime>, <groupId>)
-
Inside Module Function
self.unpinGroupMsg(<pinId>, <pinTime>, <groupId>)
Async code style
-
Outside Module Function
asyncio.run(bot.unpinGroupMsg(<pinId>, <pinTime>, <groupId>))
-
Inside Module Function (You can use
await
instead.)await self.unpinGroupMsg(<pinId>, <pinTime>, <groupId>)
Simple code style
-
Outside Module Function
asyncio.run(bot.unpin_group_msg(<pinId>, <pinTime>, <groupId>))
-
Inside Module Function (You can use
await
instead.)await bot.unpin_group_msg(<pinId>, <pinTime>, <groupId>)
Delete Group Message
This function will Delete message in group by ID.
- Args:
- msgId (int | str): Message ID to delete
- ownerId (int | str): Owner ID of the message to delete
- clientMsgId (int | str): Client message ID to delete message
- groupId (int | str): Group ID to delete message
Normal code style
-
Outside Module Function
bot.deleteGroupMsg(<msgId>, <onwerId>, <clientMsgId>, <groupId>)
-
Inside Module Function
self.deleteGroupMsg(<msgId>, <onwerId>, <clientMsgId>, <groupId>)
Async code style
-
Outside Module Function
asyncio.run(bot.deleteGroupMsg(<msgId>, <onwerId>, <clientMsgId>, <groupId>))
-
Inside Module Function (You can use
await
instead.)await self.deleteGroupMsg(<msgId>, <onwerId>, <clientMsgId>, <groupId>)
Simple code style
-
Outside Module Function
asyncio.run(bot.delete_group_msg(<msgId>, <onwerId>, <clientMsgId>, <groupId>))
-
Inside Module Function (You can use
await
instead.)await bot.delete_group_msg(<msgId>, <onwerId>, <clientMsgId>, <groupId>)
View Group Pending
This function will Give list of people pending approval in group by ID.
- Args:
- groupId (int | str): Group ID to view pending members
Normal code style
-
Outside Module Function
bot.viewGroupPending(<groupId>)
-
Inside Module Function
self.viewGroupPending(<groupId>)
Async code style
-
Outside Module Function
asyncio.run(bot.viewGroupPending(<groupId>))
-
Inside Module Function (You can use
await
instead.)await self.viewGroupPending(<groupId>)
Simple code style
-
Outside Module Function
asyncio.run(bot.view_group_pending(<groupId>))
-
Inside Module Function (You can use
await
instead.)await bot.view_group_pending(<groupId>)
Handle Group Pending
This function will Approve/Deny pending users to the group from the group's approval.
- Args:
- members (str | list): One or More member IDs to handle
- groupId (int | str): ID of the group to handle pending members
- isApprove (bool): Approve/Reject pending members (True | False)
Normal code style
-
Outside Module Function
bot.handleGroupPending(<members>, <groupId>)
-
Inside Module Function
self.handleGroupPending(<members>, <groupId>)
Async code style
-
Outside Module Function
asyncio.run(bot.handleGroupPending(<members>, <groupId>))
-
Inside Module Function (You can use
await
instead.)await self.handleGroupPending(<members>, <groupId>)
Simple code style
-
Outside Module Function
asyncio.run(bot.handle_group_pending(<members>, <groupId>))
-
Inside Module Function (You can use
await
instead.)await bot.handle_group_pending(<members>, <groupId>)
View Poll Detail
This function will Give poll data by ID.
- Args:
- pollId (int | str): Poll ID to view detail
Normal code style
-
Outside Module Function
bot.viewPollDetail(<pollId>)
-
Inside Module Function
self.viewPollDetail(<pollId>)
Async code style
-
Outside Module Function
asyncio.run(bot.viewPollDetail(<pollId>))
-
Inside Module Function (You can use
await
instead.)await self.viewPollDetail(<pollId>)
Simple code style
-
Outside Module Function
asyncio.run(bot.view_poll_detail(<pollId>))
-
Inside Module Function (You can use
await
instead.)await bot.view_poll_detail(<pollId>)
Create Poll
This function will Create poll in group by ID.
- Args:
- question (str): Question for poll
- options (str | list): List options for poll
- groupId (int | str): Group ID to create poll from
- expiredTime (int): Poll expiration time (0 = no expiration)
- pinAct (bool): Pin action (pin poll)
- multiChoices (bool): Allows multiple poll choices
- allowAddNewOption (bool): Allow members to add new options
- hideVotePreview (bool): Hide voting results when haven't voted
- isAnonymous (bool): Hide poll voters
Normal code style
-
Outside Module Function
bot.createPoll(<question>, <options>, <groupId>)
-
Inside Module Function
self.createPoll(<question>, <options>, <groupId>)
Async code style
-
Outside Module Function
asyncio.run(bot.createPoll(<question>, <options>, <groupId>))
-
Inside Module Function (You can use
await
instead.)await self.createPoll(<question>, <options>, <groupId>)
Simple code style
-
Outside Module Function
asyncio.run(bot.create_poll(<question>, <options>, <groupId>))
-
Inside Module Function (You can use
await
instead.)await bot.create_poll(<question>, <options>, <groupId>)
Lock Poll
This function will Lock/end poll by ID.
- Args:
- pollId (int | str): Poll ID to lock
Normal code style
-
Outside Module Function
bot.lockPoll(<pollId>)
-
Inside Module Function
self.lockPoll(<pollId>)
Async code style
-
Outside Module Function
asyncio.run(bot.lockPoll(<pollId>))
-
Inside Module Function (You can use
await
instead.)await self.lockPoll(<pollId>)
Simple code style
-
Outside Module Function
asyncio.run(bot.lock_poll(<pollId>))
-
Inside Module Function (You can use
await
instead.)await bot.lock_poll(<pollId>)
Disperse Group
This function will Disperse group by ID.
- Args:
- groupId (int | str): Group ID to disperse
Normal code style
-
Outside Module Function
bot.disperseGroup(<groupId>)
-
Inside Module Function
self.disperseGroup(<groupId>)
Async code style
-
Outside Module Function
asyncio.run(bot.disperseGroup(<groupId>))
-
Inside Module Function (You can use
await
instead.)await self.disperseGroup(<groupId>)
Simple code style
-
Outside Module Function
asyncio.run(bot.disperse_group(<groupId>))
-
Inside Module Function (You can use
await
instead.)await bot.disperse_group(<groupId>)
Send Message
This function will Send message to a thread (user/group).
- Args:
- message (Message):
Message
Object to send- thread_id (int | str): User/Group ID to send to
- thread_type (ThreadType):
ThreadType.USER
,ThreadType.GROUP
- mark_message (str): Send messages as
Urgent
orImportant
mark
Normal code style
-
Outside Module Function
bot.send(<message>, <thread_id>, <thread_type>)
or
bot.sendMessage(<message>, <thread_id>, <thread_type>)
-
Inside Module Function
self.send(<message>, <thread_id>, <thread_type>)
or
self.sendMessage(<message>, <thread_id>, <thread_type>)
Async code style
-
Outside Module Function
asyncio.run(bot.send(<message>, <thread_id>, <thread_type>))
or
asyncio.run(bot.sendMessage(<message>, <thread_id>, <thread_type>))
-
Inside Module Function (You can use
await
instead.)await self.send(<message>, <thread_id>, <thread_type>)
or
await self.sendMessage(<message>, <thread_id>, <thread_type>)
Simple code style
-
Outside Module Function
asyncio.run(bot.send(<message>, <thread_id>, <thread_type>))
or
asyncio.run(bot.send_message(<message>, <thread_id>, <thread_type>))
-
Inside Module Function (You can use
await
instead.)await bot.send(<message>, <thread_id>, <thread_type>)
or
await bot.send_message(<message>, <thread_id>, <thread_type>)
Reply Message
This function will Reply message in thread (user/group).
- Args:
- message (Message):
Message Object
to send- replyMsg (Message):
Message Object
to reply- thread_id (int | str): User/Group ID to send to.
- thread_type (ThreadType):
ThreadType.USER
,ThreadType.GROUP
Normal code style
-
Outside Module Function
bot.replyMessage(<message>, <replyMsg>, <thread_id>, <thread_type>)
-
Inside Module Function
self.replyMessage(<message>, <replyMsg>, <thread_id>, <thread_type>)
Async code style
-
Outside Module Function
asyncio.run(bot.replyMessage(<message>, <replyMsg>, <thread_id>, <thread_type>))
-
Inside Module Function (You can use
await
instead.)await self.replyMessage(<message>, <replyMsg>, <thread_id>, <thread_type>)
Simple code style
-
Outside Module Function
asyncio.run(bot.reply_message(<message>, <replyMsg>, <thread_id>, <thread_type>))
-
Inside Module Function (You can use
await
instead.)await bot.reply_message(<message>, <replyMsg>, <thread_id>, <thread_type>)
Undo Message
This function will Undo message from the client (self) by ID.
- Args:
- msgId (int | str): Message ID to undo
- cliMsgId (int | str): Client Msg ID to undo
- thread_id (int | str): User/Group ID to undo message
- thread_type (ThreadType):
ThreadType.USER
,ThreadType.GROUP
Normal code style
-
Outside Module Function
bot.undoMessage(<msgId>, <cliMsgId>, <thread_id>, <thread_type>)
-
Inside Module Function
self.undoMessage(<msgId>, <cliMsgId>, <thread_id>, <thread_type>)
Async code style
-
Outside Module Function
asyncio.run(bot.undoMessage(<msgId>, <cliMsgId>, <thread_id>, <thread_type>))
-
Inside Module Function (You can use
await
instead.)await self.undoMessage(<msgId>, <cliMsgId>, <thread_id>, <thread_type>)
Simple code style
-
Outside Module Function
asyncio.run(bot.undo_message(<msgId>, <cliMsgId>, <thread_id>, <thread_type>))
-
Inside Module Function (You can use
await
instead.)await bot.undo_message(<msgId>, <cliMsgId>, <thread_id>, <thread_type>)
Send Reaction
This function will Reaction message in thread (user/group) by ID.
- Args:
- messageObject (Message):
Message Object
to reaction- reactionIcon (str): Icon/Text to reaction
- thread_id (int | str): Group/User ID contain message to reaction
- thread_type (ThreadType):
ThreadType.USER
,ThreadType.GROUP
Normal code style
-
Outside Module Function
bot.sendReaction(<messageObject>, <reactionIcon>, <thread_id>, <thread_type>)
-
Inside Module Function
self.sendReaction(<messageObject>, <reactionIcon>, <thread_id>, <thread_type>)
Async code style
-
Outside Module Function
asyncio.run(bot.sendReaction(<messageObject>, <reactionIcon>, <thread_id>, <thread_type>))
-
Inside Module Function (You can use
await
instead.)await self.sendReaction(<messageObject>, <reactionIcon>, <thread_id>, <thread_type>)
Simple code style
-
Outside Module Function
asyncio.run(bot.send_reaction(<messageObject>, <reactionIcon>, <thread_id>, <thread_type>))
-
Inside Module Function (You can use
await
instead.)await bot.send_reaction(<messageObject>, <reactionIcon>, <thread_id>, <thread_type>)
Send Multiple Reactions
This function will Reaction multi message in thread (user/group) by ID.
- Args:
- reactionObj (MessageReaction): Message(s) data to reaction
- reactionIcon (str): Icon/Text to reaction
- thread_id (int | str): Group/User ID contain message to reaction
- thread_type (ThreadType):
ThreadType.USER
,ThreadType.GROUP
Normal code style
-
Outside Module Function
bot.sendMultiReaction(<reactionObj>, <reactionIcon>, <thread_id>, <thread_type>)
-
Inside Module Function
self.sendMultiReaction(<reactionObj>, <reactionIcon>, <thread_id>, <thread_type>)
Async code style
-
Outside Module Function
asyncio.run(bot.sendMultiReaction(<reactionObj>, <reactionIcon>, <thread_id>, <thread_type>))
-
Inside Module Function (You can use
await
instead.)await self.sendMultiReaction(<reactionObj>, <reactionIcon>, <thread_id>, <thread_type>)
Simple code style
-
Outside Module Function
asyncio.run(bot.send_multi_reaction(<reactionObj>, <reactionIcon>, <thread_id>, <thread_type>))
-
Inside Module Function (You can use
await
instead.)await bot.send_multi_reaction(<reactionObj>, <reactionIcon>, <thread_id>, <thread_type>)
Send Remote File
This function will Send File to a User/Group with url.
- Args:
- fileUrl (str): File url to send
- thread_id (int | str): User/Group ID to send to.
- thread_type (ThreadType):
ThreadType.USER
,ThreadType.GROUP
- fileName (str): File name to send
- fileSize (int): File size to send
- extension (str): type of file to send (py, txt, mp4, ...)
Normal code style
-
Outside Module Function
bot.sendRemoteFile(<fileUrl>, <thread_id>, <thread_type>)
-
Inside Module Function
self.sendRemoteFile(<fileUrl>, <thread_id>, <thread_type>)
Async code style
-
Outside Module Function
asyncio.run(bot.sendRemoteFile(<fileUrl>, <thread_id>, <thread_type>))
-
Inside Module Function (You can use
await
instead.)await self.sendRemoteFile(<fileUrl>, <thread_id>, <thread_type>)
Simple code style
-
Outside Module Function
asyncio.run(bot.send_remote_file(<fileUrl>, <thread_id>, <thread_type>))
-
Inside Module Function (You can use
await
instead.)await bot.send_remote_file(<fileUrl>, <thread_id>, <thread_type>)
Send Remote Video
This function will Send video to a User/Group with url.
- Args:
- videoUrl (str): Video link to send
- thumbnailUrl (str): Thumbnail link for video
- duration (int | str): Time for video (ms)
- thread_id (int | str): User/Group ID to send to.
- thread_type (ThreadType):
ThreadType.USER
,ThreadType.GROUP
- width (int): Width of the video
- height (int): Height of the video
- message (Message):
Message Object
to send with video
Normal code style
-
Outside Module Function
bot.sendRemoteVideo(<videoUrl>, <thumbnailUrl>, <duration>, <thread_id>, <thread_type>)
-
Inside Module Function
self.sendRemoteVideo(<videoUrl>, <thumbnailUrl>, <duration>, <thread_id>, <thread_type>)
Async code style
-
Outside Module Function
asyncio.run(bot.sendRemoteVideo(<videoUrl>, <thumbnailUrl>, <duration>, <thread_id>, <thread_type>))
-
Inside Module Function (You can use
await
instead.)await self.sendRemoteVideo(<videoUrl>, <thumbnailUrl>, <duration>, <thread_id>, <thread_type>)
Simple code style
-
Outside Module Function
asyncio.run(bot.send_remote_video(<videoUrl>, <thumbnailUrl>, <duration>, <thread_id>, <thread_type>))
-
Inside Module Function (You can use
await
instead.)await bot.send_remote_video(<videoUrl>, <thumbnailUrl>, <duration>, <thread_id>, <thread_type>)
Send Remote Voice
This function will Send voice to a User/Group with url.
- Args:
- voiceUrl (str): Voice link to send
- thread_id (int | str): User/Group ID to change status in
- thread_type (ThreadType):
ThreadType.USER
,ThreadType.GROUP
- fileSize (int | str): Voice content length (size) to send
Normal code style
-
Outside Module Function
bot.sendRemoteVoice(<voiceUrl>, <thread_id>, <thread_type>)
-
Inside Module Function
self.sendRemoteVoice(<voiceUrl>, <thread_id>, <thread_type>)
Async code style
-
Outside Module Function
asyncio.run(bot.sendRemoteVoice(<voiceUrl>, <thread_id>, <thread_type>))
-
Inside Module Function (You can use
await
instead.)await self.sendRemoteVoice(<voiceUrl>, <thread_id>, <thread_type>)
Simple code style
-
Outside Module Function
asyncio.run(bot.send_remote_voice(<voiceUrl>, <thread_id>, <thread_type>))
-
Inside Module Function (You can use
await
instead.)await bot.send_remote_voice(<voiceUrl>, <thread_id>, <thread_type>)
Send Local Image
This function will Send Image to a User/Group with local file.
- Args:
- imagePath (str): Image directory to send
- thread_id (int | str): User/Group ID to send to.
- thread_type (ThreadType):
ThreadType.USER
,ThreadType.GROUP
- width (int): Image width to send
- height (int): Image height to send
- message (Message):
Message Object
to send with image
Normal code style
-
Outside Module Function
bot.sendLocalImage(<imagePath>, <thread_id>, <thread_type>)
-
Inside Module Function
self.sendLocalImage(<imagePath>, <thread_id>, <thread_type>)
Async code style
-
Outside Module Function
asyncio.run(bot.sendLocalImage(<imagePath>, <thread_id>, <thread_type>))
-
Inside Module Function (You can use
await
instead.)await self.sendLocalImage(<imagePath>, <thread_id>, <thread_type>)
Simple code style
-
Outside Module Function
asyncio.run(bot.send_local_image(<imagePath>, <thread_id>, <thread_type>))
-
Inside Module Function (You can use
await
instead.)await bot.send_local_image(<imagePath>, <thread_id>, <thread_type>)
Send Multiple Local Image
This function will Send Multiple Image to a User/Group with local file.
- Args:
- imagePathList (list): List image directory to send
- thread_id (int | str): User/Group ID to send to.
- thread_type (ThreadType):
ThreadType.USER
,ThreadType.GROUP
- width (int): Image width to send
- height (int): Image height to send
- message (Message):
Message Object
to send with image
Normal code style
-
Outside Module Function
bot.sendMultiLocalImage(<imagePathList>, <thread_id>, <thread_type>)
-
Inside Module Function
self.sendMultiLocalImage(<imagePathList>, <thread_id>, <thread_type>)
Async code style
-
Outside Module Function
asyncio.run(bot.sendMultiLocalImage(<imagePathList>, <thread_id>, <thread_type>))
-
Inside Module Function (You can use
await
instead.)await self.sendMultiLocalImage(<imagePathList>, <thread_id>, <thread_type>)
Simple code style
-
Outside Module Function
asyncio.run(bot.send_multi_local_image(<imagePathList>, <thread_id>, <thread_type>))
-
Inside Module Function (You can use
await
instead.)await bot.send_multi_local_image(<imagePathList>, <thread_id>, <thread_type>)
Send Local Gif
This function will Send Gif to a User/Group with local file.
- Args:
- gifPath (str): Gif path to send
- thumbnailUrl (str): Thumbnail of gif to send
- thread_id (int | str): User/Group ID to send to.
- thread_type (ThreadType):
ThreadType.USER
,ThreadType.GROUP
- gifName (str): Gif name to send
- width (int): Gif width to send
- height (int): Gif height to send
Normal code style
-
Outside Module Function
bot.sendLocalGif(<gifPath>, <thumbnailUrl>, <thread_id>, <thread_type>)
-
Inside Module Function
self.sendLocalGif(<gifPath>, <thumbnailUrl>, <thread_id>, <thread_type>)
Async code style
-
Outside Module Function
asyncio.run(bot.sendLocalGif(<gifPath>, <thumbnailUrl>, <thread_id>, <thread_type>))
-
Inside Module Function (You can use
await
instead.)await self.sendLocalGif(<gifPath>, <thumbnailUrl>, <thread_id>, <thread_type>)
Simple code style
-
Outside Module Function
asyncio.run(bot.send_local_gif(<gifPath>, <thumbnailUrl>, <thread_id>, <thread_type>))
-
Inside Module Function (You can use
await
instead.)await bot.send_local_gif(<gifPath>, <thumbnailUrl>, <thread_id>, <thread_type>)
Send Sticker
This function will Send Sticker to a User/Group.
- Args:
- stickerType (int | str): Sticker type to send
- stickerId (int | str): Sticker id to send
- cateId (int | str): Sticker category id to send
- thread_id (int | str): User/Group ID to send to.
- thread_type (ThreadType):
ThreadType.USER
,ThreadType.GROUP
Normal code style
-
Outside Module Function
bot.sendSticker(<stickerType>, <stickerId>, <cateId>, <thread_id>, <thread_type>)
-
Inside Module Function
self.sendSticker(<stickerType>, <stickerId>, <cateId>, <thread_id>, <thread_type>)
Async code style
-
Outside Module Function
asyncio.run(bot.sendSticker(<stickerType>, <stickerId>, <cateId>, <thread_id>, <thread_type>))
-
Inside Module Function (You can use
await
instead.)await self.sendSticker(<stickerType>, <stickerId>, <cateId>, <thread_id>, <thread_type>)
Simple code style
-
Outside Module Function
asyncio.run(bot.send_sticker(<stickerType>, <stickerId>, <cateId>, <thread_id>, <thread_type>))
-
Inside Module Function (You can use
await
instead.)await bot.send_sticker(<stickerType>, <stickerId>, <cateId>, <thread_id>, <thread_type>)
Send Custom Sticker
This function will Send custom (static/animation) sticker to a User/Group with url.
- Args:
- staticImgUrl (str): Image url (png, jpg, jpeg) format to create sticker
- animationImgUrl (str): Static/Animation image url (webp) format to create sticker
- thread_id (int | str): User/Group ID to send sticker to.
- thread_type (ThreadType):
ThreadType.USER
,ThreadType.GROUP
- reply (int | str): Message ID to send stickers with quote
- width (int | str): Width of photo/sticker
- height (int | str): Height of photo/sticker
Normal code style
-
Outside Module Function
bot.sendCustomSticker(<staticImgUrl>, <animationImgUrl>, <thread_id>, <thread_type>)
-
Inside Module Function
self.sendCustomSticker(<staticImgUrl>, <animationImgUrl>, <thread_id>, <thread_type>)
Async code style
-
Outside Module Function
asyncio.run(bot.sendCustomSticker(<staticImgUrl>, <animationImgUrl>, <thread_id>, <thread_type>))
-
Inside Module Function (You can use
await
instead.)await self.sendCustomSticker(<staticImgUrl>, <animationImgUrl>, <thread_id>, <thread_type>)
Simple code style
-
Outside Module Function
asyncio.run(bot.send_custom_sticker(<staticImgUrl>, <animationImgUrl>, <thread_id>, <thread_type>))
-
Inside Module Function (You can use
await
instead.)await bot.send_custom_sticker(<staticImgUrl>, <animationImgUrl>, <thread_id>, <thread_type>)
Send Link
This function will Send link to a User/Group with url.
- Args:
- linkUrl (str): Link url to send
- title (str): Title for card to send
- thread_id (int | str): User/Group ID to send link to
- thread_type (ThreadType):
ThreadType.USER
,ThreadType.GROUP
- thumbnailUrl (str): Thumbnail link url for card to send
- domainUrl (str): Main domain of Link to send (eg: github.com)
- desc (str): Description for card to send
- message (Message):
Message Object
to send with the link
Normal code style
-
Outside Module Function
bot.sendLink(<linkUrl>, <title>, <thread_id>, <thread_type>)
-
Inside Module Function
self.sendLink(<linkUrl>, <title>, <thread_id>, <thread_type>)
Async code style
-
Outside Module Function
asyncio.run(bot.sendLink(<linkUrl>, <title>, <thread_id>, <thread_type>))
-
Inside Module Function (You can use
await
instead.)await self.sendLink(<linkUrl>, <title>, <thread_id>, <thread_type>)
Simple code style
-
Outside Module Function
asyncio.run(bot.send_link(<linkUrl>, <title>, <thread_id>, <thread_type>))
-
Inside Module Function (You can use
await
instead.)await bot.send_link(<linkUrl>, <title>, <thread_id>, <thread_type>)
Send Report
This function will Send report to Zalo.
- Args:
thread_id (int | str): User/Group ID to report
thread_type (ThreadType):
ThreadType.USER
,ThreadType.GROUP
reason (int): Reason for reporting
- 1 = Nội dung nhạy cảm
- 2 = Làm phiền
- 3 = Lừa đảo
- 0 = custom
content (str): Report content (work if reason = custom)
Normal code style
-
Outside Module Function
bot.sendReport(<thread_id>, <thread_type>)
-
Inside Module Function
self.sendReport(<thread_id>, <thread_type>)
Async code style
-
Outside Module Function
asyncio.run(bot.sendReport(<thread_id>, <thread_type>))
-
Inside Module Function (You can use
await
instead.)await self.sendReport(<thread_id>, <thread_type>)
Simple code style
-
Outside Module Function
asyncio.run(bot.send_report(<thread_id>, <thread_type>))
-
Inside Module Function (You can use
await
instead.)await bot.send_report(<thread_id>, <thread_type>)
Send Business Card
This function will Send business card to thread (user/group) by user ID.
- Args:
- userId (int | str): Business card user ID
- qrCodeUrl (str): QR Code link with business card profile information
- thread_id (int | str): User/Group ID to change status in
- thread_type (ThreadType):
ThreadType.USER
,ThreadType.GROUP
- phone (int | str): Send business card with phone number
Normal code style
-
Outside Module Function
bot.sendBusinessCard(<userId>, <qrCodeUrl>, <thread_id>, <thread_type>)
-
Inside Module Function
self.sendBusinessCard(<userId>, <qrCodeUrl>, <thread_id>, <thread_type>)
Async code style
-
Outside Module Function
asyncio.run(bot.sendBusinessCard(<userId>, <qrCodeUrl>, <thread_id>, <thread_type>))
-
Inside Module Function (You can use
await
instead.)await self.sendBusinessCard(<userId>, <qrCodeUrl>, <thread_id>, <thread_type>)
Simple code style
-
Outside Module Function
asyncio.run(bot.send_business_card(<userId>, <qrCodeUrl>, <thread_id>, <thread_type>))
-
Inside Module Function (You can use
await
instead.)await bot.send_business_card(<userId>, <qrCodeUrl>, <thread_id>, <thread_type>)
Set Typing Status
This function will Set users typing status.
- Args:
- thread_id: User/Group ID to change status in.
- thread_type (ThreadType):
ThreadType.USER
,ThreadType.GROUP
Normal code style
-
Outside Module Function
bot.setTyping(<thread_id>, <thread_type>)
-
Inside Module Function
self.setTyping(<thread_id>, <thread_type>)
Async code style
-
Outside Module Function
asyncio.run(bot.setTyping(<thread_id>, <thread_type>))
-
Inside Module Function (You can use
await
instead.)await self.setTyping(<thread_id>, <thread_type>)
Simple code style
-
Outside Module Function
asyncio.run(bot.set_typing(<thread_id>, <thread_type>))
-
Inside Module Function (You can use
await
instead.)await bot.set_typing(<thread_id>, <thread_type>)
Mark Message As Delivered
This function will Mark a message as delivered.
- Args:
- msgId (int | str): Message ID to set as delivered
- cliMsgId (int | str): Client message ID
- senderId (int | str): Message sender Id
- thread_id (int | str): User/Group ID to mark as delivered
- thread_type (ThreadType):
ThreadType.USER
,ThreadType.GROUP
Normal code style
-
Outside Module Function
bot.markAsDelivered(<msgId>, <cliMsgId>, <senderId>, <thread_id>, <thread_type>)
-
Inside Module Function
self.markAsDelivered(<msgId>, <cliMsgId>, <senderId>, <thread_id>, <thread_type>)
Async code style
-
Outside Module Function
asyncio.run(bot.markAsDelivered(<msgId>, <cliMsgId>, <senderId>, <thread_id>, <thread_type>))
-
Inside Module Function (You can use
await
instead.)await self.markAsDelivered(<msgId>, <cliMsgId>, <senderId>, <thread_id>, <thread_type>)
Simple code style
-
Outside Module Function
asyncio.run(bot.mark_as_delivered(<msgId>, <cliMsgId>, <senderId>, <thread_id>, <thread_type>))
-
Inside Module Function (You can use
await
instead.)await bot.mark_as_delivered(<msgId>, <cliMsgId>, <senderId>, <thread_id>, <thread_type>)
Mark Message As Read
This function will Mark a message as read.
- Args:
- msgId (int | str): Message ID to set as delivered
- cliMsgId (int | str): Client message ID
- senderId (int | str): Message sender Id
- thread_id (int | str): User/Group ID to mark as read
- thread_type (ThreadType):
ThreadType.USER
,ThreadType.GROUP
Normal code style
-
Outside Module Function
bot.markAsRead(<msgId>, <cliMsgId>, <senderId>, <thread_id>, <thread_type>)
-
Inside Module Function
self.markAsRead(<msgId>, <cliMsgId>, <senderId>, <thread_id>, <thread_type>)
Async code style
-
Outside Module Function
asyncio.run(bot.markAsRead(<msgId>, <cliMsgId>, <senderId>, <thread_id>, <thread_type>))
-
Inside Module Function (You can use
await
instead.)await self.markAsRead(<msgId>, <cliMsgId>, <senderId>, <thread_id>, <thread_type>)
Simple code style
-
Outside Module Function
asyncio.run(bot.mark_as_read(<msgId>, <cliMsgId>, <senderId>, <thread_id>, <thread_type>))
-
Inside Module Function (You can use
await
instead.)await bot.mark_as_read(<msgId>, <cliMsgId>, <senderId>, <thread_id>, <thread_type>)
Listen
This function will Initialize and runs the listening loop continually.
- Args:
- delay (int): Delay time for each message fetch for
requests
type (Default: 1)- thread (bool): Handle messages within the thread for
requests
type (Default: False)- type (str): Type of listening (Default: websocket)
- reconnect (int): Delay interval when reconnecting
- Use Outside Of Function
bot.listen()
On Listening
This function is called when the client is listening.
Normal code style
-
Inside Module Custom Class
def onListening(self): ....
Async code style
-
Inside Module Custom Class
async def onListening(self): ....
Simple code style
-
Outside Module Class
@bot.event async def on_listening(): ....
On Message
This function is called when the client is listening, and somebody sends a message.
- Args:
- mid: The message ID
- author_id: The ID of the author
- message: The message content of the author
- message_object: The message (As a
Message
object)- thread_id: Thread ID that the message was sent to.
- thread_type (ThreadType): Type of thread that the message was sent to.
Normal code style
-
Inside Module Custom Class
def onMessage(self, mid, author_id, message, message_object, thread_id, thread_type): ....
Async code style
-
Inside Module Custom Class
async def onMessage(self, mid, author_id, message, message_object, thread_id, thread_type): ....
Simple code style
In simple type, all event or register_handler functions use args with context.
Args Context Example:
- ctx.message_id
- ctx.author_id
- ctx.message
- ctx.message_object
- ctx.thread_id
- ctx.thread_type
-
Outside Module Class
@bot.event async def on_message(ctx): ....
On Event
This function is called when the client listening, and some events occurred.
- Args:
- event_data (EventObject): Event data (As a
EventObject
object)- event_type (EventType/GroupEventType): Event Type
Normal code style
-
Inside Module Custom Class
def onEvent(self, event_data, event_type): ....
Async code style
-
Inside Module Custom Class
async def onEvent(self, event_data, event_type): ....
Simple code style
In simple type, all event or register_handler functions use args with context.
Args Context Example:
- ctx.event_data
- ctx.event_type
-
Outside Module Class
@bot.event async def on_event(ctx): ....
Messages
Represents a Zalo message.
- Args:
- text (str): The actual message
- style (MessageStyle/MultiMsgStyle): A
MessageStyle
orMultiMsgStyle
objects- mention (Mention/MultiMention): A
Mention
orMultiMention
objects- parse_mode (str): Format messages in
Markdown
,HTML
style
Message(text=<text>, mention=<mention>, style=<style>)
Message Style
Style for message.
- Args:
- offset (int): The starting position of the style. Defaults to 0.
- length (int): The length of the style. Defaults to 1.
- style (str): The type of style. Can be "font", "bold", "italic", "underline", "strike", or "color". Defaults to "font".
- color (str): The color of the style in hexadecimal format (e.g. "ffffff"). Only applicable when style is "color". Defaults to "ffffff".
- size (int | str): The font size of the style. Only applicable when style is "font". Defaults to "18".
- auto_format (bool): If there are multiple styles (used in
MultiMsgStyle
) then set it to False. Default is True (1 style)
-
Example
- bold style with offset is 5, length is 10.
style = MessageStyle(offset=5, length=10, style="bold") ...
- color style with offset is 10, length is 5 and color="
#ff0000
"
style = MessageStyle(offset=10, ``length=5``, style="color", color="ff0000") ...
- font style with offset is 15, length is 8 and size="24" (Customize font size to 24)
style = MessageStyle(offset=15, length=8, style="font", size="24") ...
Multiple Message Style
Multiple style for message.
- Args:
- listStyle (MessageStyle): A list of
MessageStyle
objects to be combined into a single style format.
style = MultiMsgStyle([
MessageStyle(offset=<text>, length=<mention>, style=<style>, color=<color>, size=<size>, auto_format=False),
MessageStyle(offset=<text>, length=<mention>, style=<style>, color=<color>, size=<size>, auto_format=False),
...
])
Mention
Represents a @mention.
- Args:
- uid (str): The user ID to be mentioned.
- length (int): The length of the mention. Defaults to 1.
- offset (int): The starting position of the mention. Defaults to 0.
- auto_format (bool): If there are multiple mention (used in
MultiMention
) then set it to False. Default is True (1 mention).
mention = Mention(uid=<uid>, length=<length>, offset=<offset>)
...
- Mention user id 1234567890 with offset is 10 and length is 5.
mention = Mention("1234567890", length=5, offset=10)
...
Multiple Mention
Represents multiple @mentions.
- Args:
- listMention (Mention): A list of
Mention
objects to be combined into a single mention format.
mention = MultiMention([
Mention(uid=<uid>, length=<length>, offset=<offset>, auto_format=False),
Mention(uid=<uid>, length=<length>, offset=<offset>, auto_format=False),
...
])
- Mention user id 1234567890 with offset is 10 and length is 5.
- Mention user id 9876543210 with offset is 20 and length is 3.
mention1 = Mention("1234567890", length=5, offset=10)
mention2 = Mention("9876543210", length=3, offset=20)
mention = MultiMention([mention1, mention2])
Example
See examples folder to learn more about zlapi
.
Acknowledgments
-
This project was originally inspired by fbchat.
-
listen
websocket
type taken from zca-js. -
Thanks for support:
- Crow for Hosting.
- Duy Hoang for the Video Tutorial.
- Nguyen Hong Anh Duc for the Example.
- Khang Phan for help fix the
listen
function error.
Contact For Help
- Telegram: Vexx
- Facebook: Lê Quốc Việt
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file zlapi-1.0.2.tar.gz
.
File metadata
- Download URL: zlapi-1.0.2.tar.gz
- Upload date:
- Size: 97.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.11.9
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7bb3405bd860291c2d1c71da1eb1ffea7a30c1313e9a543a9c102bbb9b5925da |
|
MD5 | 0ddfa26bd475e38a1099c9310a41465a |
|
BLAKE2b-256 | dd4f8446e5dff02b03a27c3c7ce1bea4cb9a63a675f6424906ff1dc9d5bc9228 |
File details
Details for the file zlapi-1.0.2-py3-none-any.whl
.
File metadata
- Download URL: zlapi-1.0.2-py3-none-any.whl
- Upload date:
- Size: 77.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.11.9
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | d68ea0a1c014b8aae4f0280721dd250d6603fe75118c91d52539a4307bf202e6 |
|
MD5 | 06f0fef84de42f8faa34af74bb55aaa4 |
|
BLAKE2b-256 | 56e4b88f268e056a03acb0808d20dccf99f03a69d80310314599fd79e926f555 |