Skip to content
This repository has been archived by the owner on Apr 30, 2021. It is now read-only.

wrboyce/telegrambot

Repository files navigation

Disclaimer README

Build Status Coverage Status Code Quality Current Version Python Versions

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'])

About

Pluggable Python Telegram Bot

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages