Pluggable Python Telegram Bot
Project description
Despite this code having been in production in quite a heavy use environment for a good few months, I really wouldn’t class it as an example of great code.
It would be fair to say I got sidetracked, and decided to see how much I could abuse certain aspects of Python (such as metaclasses/class creation).
You have been warned!
With that out of the way, telegrambot is pretty easy to get up and running.
% pip install telegrambot % cat mybot.cfg [core] bot_id = <telegram_bot_id> token = <telegram_bot_token> [bing] key = <bing_api_key> % telegrambot mybot.cfg
As it stands the framework exposes three commands; /crash and /hang were used to test error handling and threading during development whereas /get is a bring-your-own-api-key bing image searcher.
Adding plugins aims to be really easy, just create a namespace package under telegrambot.plugins and subclass telegrambot.plugins.base.BasePlugin (now that I think about it, the namespace package may not be necessary - I will have to re-think my motivation on that one).
Example Plugin
from telegrambot.plugins.base import BasePlugin
# due to annoying limitations class names must be unique
class HelloWorld(BasePlugin):
# register /hello command to 'hello_handler' method
commands {'hello': 'hello_handler'}
def hello_handler(self, args, msg):
# `args` is a list of the arguments after the command:
# '/hello world' -> args=['world']
# `msg` is a dictionary representing the Telegram `Message` object
# see TelegramAPIMixin for available Telegram API functions
self.send_message('Hello, {}'.(' '.join(args)),
msg['chat']['id'],
reply=msg['message_id'])
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.