Telegram Bot API with Tornado
Project description
Telegram Bot API with Tornado.
High Level API Example
BotAgent is a high level undead, you can demand it to send requests:
from tornado import gen, ioloop
from wcpan.telegram import api, types
async def main():
API_TOKEN = 'your_token'
lich = api.BotAgent(API_TOKEN)
talk_to = 42
# getMe
user = await lich.get_me()
print(user)
# getUpdates
updates = await lich.get_updates()
print(updates)
# sendMessage
message = await lich.send_message(talk_to, 'hello')
print(message)
# sendPhoto
photo = types.InputFile('path_to_your_phoho.png')
message = await lich.send_photo(talk_to, photo)
print(message)
# sendAudio
audio = types.InputFile('path_to_your_audio.ogg')
message = await lich.send_audio(talk_to, audio)
print(message)
# sendVideo
video = types.InputFile('path_to_your_video.mp4')
message = await lich.send_video(talk_to, video)
print(message)
# sendDocument
document = types.InputFile('path_to_your_file.zip')
message = await lich.send_document(talk_to, document)
print(message)
main_loop = ioloop.IOLoop.instance()
main_loop.run_sync(main)
And let it handles updates:
from tornado import gen, ioloop
from wcpan.telegram import api
class KelThuzad(api.BotAgent):
def __init__(self, api_token):
super(KelThuzad, self).__init__(api_token)
async def on_text(self, message):
id_ = message.message_id
chat = message.chat
text = message.text
# echo same text
await self.send_message(chat.id_, text, reply_to_message_id=id_)
async def on_video(self, message):
chat = message.chat
video = message.video
# echo video without upload again
await self.send_video(chat.id_, video.file_id, reply_to_message_id=id_)
async def forever():
API_TOKEN = 'your_token'
lich = api.KelThuzad(API_TOKEN)
await lich.poll()
main_loop = ioloop.IOLoop.instance()
main_loop.run_sync(forever)
Or handles updates by webhook:
from tornado import gen, ioloop, web
from wcpan.telegram import api
class HookHandler(api.BotHookHandler):
async def on_text(self, message):
lich = self.application.settings['lich']
id_ = message.message_id
chat = message.chat
text = message.text
# echo same text
await lich.send_message(chat.id_, text, reply_to_message_id=id_)
async def create_lich():
API_TOKEN = 'your_token'
lich = api.BotAgent(API_TOKEN)
await lich.listen('https://your.host/hook')
return lich
main_loop = ioloop.IOLoop.instance()
lich = main_loop.run_sync(create_lich)
application = web.Application([
(r"/hook", HookHandler),
], lich=lich)
# please configure your own SSL proxy
application.listen(8000)
main_loop.start()
Low Level API Example
BotClient is also there, which provides simple and direct API mapping:
from tornado import gen, ioloop
from wcpan.telegram import api, types
async def main():
API_TOKEN = 'your_token'
ghoul = api.BotClient(API_TOKEN)
talk_to = 42
# getMe
user = await ghoul.get_me()
print(user)
# getUpdates
offset = 0
updates = []
while True:
us = await ghoul.get_updates(offset)
updates.extend(us)
if not us:
break
offset = us[-1].update_id + 1
print(updates)
# sendMessage
message = await ghoul.send_message(talk_to, 'hello')
print(message)
# sendDocument
document = types.InputFile('path_to_your_file.zip')
message = await lich.send_document(talk_to, document)
print(message)
main_loop = ioloop.IOLoop.instance()
main_loop.run_sync(main)
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
wcpan.telegram-0.3.0.dev2.tar.gz
(11.3 kB
view hashes)
Built Distribution
Close
Hashes for wcpan.telegram-0.3.0.dev2.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | fa9a37d0bde87afd181bdf39e6653e75963007fca2ab502e5f693ce9a3b1747d |
|
MD5 | 06d9da98fce88d47546c96524da15bff |
|
BLAKE2b-256 | 4ed2656c073a99aff19c04c180405b4f12327e3a496bcc5bb042934c4c5b000b |
Close
Hashes for wcpan.telegram-0.3.0.dev2-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f4b0dcf232c3e65fa5f91810cbc2c38a2c3c1f149cd993b2842ef3f42f1dced3 |
|
MD5 | 703734f86f5ac5043f3e9a655dcbb3e4 |
|
BLAKE2b-256 | de06f82559f073d51bad68d9bb01ecb32429c35105eaa74106ed7cbbddc4dfda |