Mirai HTTP SDK for Python
Derived from Python-Mirai. If you decided to Star this project, please also Star the original project.
A Flask like Python wrapper of Mirai-HTTP-API
See full documentation here
Synced with mirai core 1.0RC
Installation
Install from PyPI
pip install python-mirai-core
Install from GitHub
pip install git+git:://github.com/NatriumLab/python-mirai-core
TL; DR
See code completion generated by PyCharm or VSCode.
Fundamentals:
Bot and Updater are two object to interact with mirai-http-api.
Bot contains all outbound actions (such as send_message),
all methods are well documented, and internal methods starts with _
Updater handles all inbound updates (such as receiving events or messages)
A list of available event is under mirai_core.models.Events.
A list of available message components (to construct MessageChain) is under mirai_core.models.Message.
Features
-
Updater handshake with mirai-console automatically when console is restarted or session is expired
-
Similar logic to python-telegram-bot or aiogram
-
Message type is an argument everywhere, no more send_group/friend/temp_message
-
Supports multiple listener for single event, use
return Trueto block further calling for this event only -
Supports Websocket (enabled by default)
-
Supports xml/json/app message
Example
from mirai_core import Bot, Updater
from mirai_core.models import Event, Message, Types
qq = 123456
host = '127.0.0.1'
port = 18080
auth_key = 'abcdefgh'
scheme = 'http' # http or https
bot = Bot(qq, host, port, auth_key, scheme=scheme)
updater = Updater(bot)
# for bot methods, see available methods under mirai_core.Bot
# for event types, see mirai_core.models.Event
# for enums, see mirai_core.models.Types
# for exception types, see mirai_core.exceptions
# this is how handling inbound events looks like
@updater.add_handler([Event.Message])
async def handler(event: Event.BaseEvent):
"""
handler for multiple events
:param event: generic type of event
if only one type of event is handled by this method, the type hinting should be changed accordingly
e.g. async def handler(event: BaseEvent.Message):
in order to see detailed definition of a certain event, either use isinstance to restrict the type, or change the
type hinting in event handler's definition
e.g. if isinstance(event, BaseEvent.Message):
:return: True for block calling other event handlers for this event, None or False for keep calling the rest
"""
if isinstance(event, Event.Message): # handle different types of events
# see auto completion for event for available attributes
# echo
await bot.send_message(target=event.sender,
message_type=event.type,
message=event.messageChain,
quote_source=event.messageChain.get_source())
# custom message
# see auto completion for Message for more available message components
message_chain = [
# see docstring for __init__ for argument descriptions
Message.Plain(text='test')
]
if event.type == Types.MessageType.GROUP:
message_chain.append(event.member.id)
image = Message.Image(path='/root/whatever.jpg')
message_chain.append(image)
# see docstring for individual method
bot_message = await bot.send_message(target=event.sender,
message_type=event.type,
message=message_chain,
# friend message can also quoted, but only viewable by QQ, not TIM
quote_source=event.messageChain.get_source())
# in case you want the message id for recalling
print(bot_message.messageId)
# in case you want the image id (only available when sending via local path instead of url)
# the image id is available for two weeks from the last time it is used
image_id = image.imageId
print(image_id)
return True
# run the updater forever, block the program from exiting
updater.run()
Comprehensive example: see UMR
Thanks
Thanks mamoe brings us mirai, a tremendous work that
enables boundless possibilities for QQ Bots.
Thanks Python-Mirai for inspirations and data parsing.
License
Same as mirai
Metadata
Release files for python-mirai-core 0.10.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| python-mirai-core-0.10.1.tar.gz | 21.1 kB | Details |
Release files / python-mirai-core-0.10.1.tar.gz
| Download URL | python-mirai-core-0.10.1.tar.gz |
|---|---|
| Size | 21.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
57e35b3e3d88baa977be79f1ac1c322e3cf16779153a6b555a90b4b90e4d432c
|
|
BLAKE2b-256 checksum How to use checksums |
d38b925c2b8d3820ab24230339de78f68f8e19fa4e33041d571a3bb1f79cd813
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.2 CPython/3.9.16
|