AioLineBotApi provides asynchronous interface for LINE messaging API
Project description
aiolinebot
AioLineBotApi provides asynchronous interface for LINE messaging API
✨ Features
- 100% coverage: All endpoints of line-bot-sdk supported!
- 100% compatible: Both async and sync methods for each endpoint provided!
- Up-to-date immediately: Update automatically when your line-bot-sdk is updated!
by dynamic class building: making async api client at the first time you import this package, from the source of line-bot-sdk installed in your environment.
🥳 Usage
Just create instance of AioLineBotApi instead of LineBotApi. That's all.
# line_api = LineBotApi("<YOUR CHANNEL ACCESS TOKEN>")
line_api = AioLineBotApi("<YOUR CHANNEL ACCESS TOKEN>")
Now you are ready to use both async and sync methods for each endpoint.
# async
loop = asyncio.get_event_loop()
loop.run_until_complete(
line_api.reply_message_async("<REPLY TOKEN>", TextMessage("Hello!"))
)
# sync
line_api.reply_message("<REPLY TOKEN>", TextMessage("Hello!"))
Note that when you get binary content by stream, you should close the http response after finished.
content = await line_api.get_message_content_async("<MESSAGE ID>")
async for b in content.iter_content(1024):
do_something(b)
await content.response.close()
📦 Installation
$ pip install aiolinebot
⚙ Dependencies
- aiohttp
- line-bot-sdk
Contribution
All kinds of contributions are welcomed🙇♀️🙇♀️🙇♀️
Especially we need tests. Because of async we can't use responses
that is used in the tests for line-bot-sdk. So at first we have to find out the way of testing...
If you have any ideas about testing post issue please🙏🙏
🥘 Example
This is the echobot on Azure Functions.
import logging
import azure.functions as func
from linebot import WebhookParser
from linebot.models import TextMessage
from aiolinebot import AioLineBotApi
async def main(req: func.HttpRequest) -> func.HttpResponse:
# create api client
line_api = AioLineBotApi(channel_access_token="<YOUR CHANNEL ACCESS TOKEN>")
# get events from request
parser = WebhookParser(channel_secret="<YOUR CHANNEL SECRET>")
events = parser.parse(req.get_body().decode("utf-8"), req.headers.get("X-Line-Signature", ""))
for ev in events:
# reply echo
await line_api.reply_message(ev.reply_token, TextMessage(text=f"You said: {ev.message.text}"))
# 200 response
return func.HttpResponse("ok")
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distribution
File details
Details for the file aiolinebot-0.4.1-py3-none-any.whl
.
File metadata
- Download URL: aiolinebot-0.4.1-py3-none-any.whl
- Upload date:
- Size: 6.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.8.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 958fbb0b01e1de73a8241104b7da61ce8ef5f85f0da722f48286b6873952eebd |
|
MD5 | 9310e2520fe7ac09a015458ed44caa17 |
|
BLAKE2b-256 | 2a9423ad8a733a30702e80dcb54fdc184f1a560c278173343c53c8ba614ec191 |