Skip to main content

Tiny lib for icq/myteam command bots

Project description

mailru_im_command_bot

PyPI PyPI - Python Version tests coverage

mailru_im_command_bot is convenient library for generic myteam/icq bots. In fact it is a wrapper for mailru-im-bot.

It uses type annotations for help method and transforming arguments.

It is fully tested and production-ready)

Pypi link

Usage

You can create your bot with following code:

import logging

from mailru_im_command_bot import CommandBot, MessageEnv

logging.basicConfig(level=logging.INFO)

bot = CommandBot(
    token='your_token',
    help_message='this is simple hello world bot'
)


@bot.command('hello')
def hello(env: MessageEnv, name='world') -> str:
    return f'hello {name}'


bot.start()

Bot will response you:

you: /hello
bot: hello world

you: /hello danila
bot: hello danila

Help message will be:

this is simple hello world bot

list of commands:
/hello
  args:
    name: str = world

Advanced Usage

Bot can automatically parse int, float, bool, any enum.Enum and also any type that implements mailru_im_command_bot.CustomParam protocol:

import enum
import logging
from logging import getLogger

from mailru_im_command_bot import BadArg, CommandBot, MessageEnv

logging.basicConfig(level=logging.INFO)


class Email(str):
    @classmethod
    def verbose_classname(cls) -> str:
        return cls.__name__

    @classmethod
    def from_arg(cls, arg: str) -> 'Email':
        if '@' not in arg:
            raise BadArg(f'{arg} is invalid email')
        return cls(arg)

    def to_arg(self) -> str:
        return str(self)


class ExampleEnum(enum.Enum):
    case_one = 1
    case_two = 2


bot = CommandBot(
    token='tour_token',
    name='your_bot_name',
    version='1.0.0',
    logger=getLogger(__name__),
    alert_to=['your_id'],
    help_message='your bot description',
)


@bot.command('example_command')
def example_command(
    env: MessageEnv,
    int_arg: int,  # required
    float_arg: float = 1.0,  # optional
    str_arg: str = 'test_str',  # optional
    enum_arg: ExampleEnum = ExampleEnum.case_one,  # optional
    bool_arg: bool = True,  # optional
    email_arg: Email = Email('ddf1998@gmail.com'),  # optional
) -> str:
    """your function help message"""
    ...
    return 'response'


bot.start()

You can also wrap existing bot:

from bot import Bot
from mailru_im_command_bot import CommandBot
from logging import getLogger

base_bot = Bot(
    token='your_token_here',
    name='your_bot_name',
    version='your_bot_version',
)

bot = CommandBot(
    from_bot=base_bot,
    logger=getLogger(__name__),
    alert_to=['danila.fomin@corp.mail.ru'],
    help_message='your bot description',
)

Bot accepts messages like this:

/example_command 1
# you get int_arg = 1 and other arguments defaults

/example_command 1 0
# you get int_arg = 1, float_arg = 0.0 and other arguments defaults

...etc

It also can accept key-value arguments:

/example_command int_arg=1
/example_command 1 enum_arg=case_two
/example_command int_arg=1 enum_arg=case_two

Your help message will be like this:

your bot description

list of commands:
/example_command
  your function help message
  args:
    int_arg: int
    float_arg: float = 1.0
    str_arg: str = test_str
    enum_arg: case_one|case_two = case_one
    bool_arg: True|False = True
    email_arg: Email = ddf1998@gmail.com

Bot automatically writes access log with provided logger.

[ACCESS] [user_id]@[chat_id] /example_command elapsed=0.100s

If an exception occurred bot will write the error into log, send 'some exception occurred' to user and report error to users in alert_to list.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mailru-im-command-bot-0.1.7.tar.gz (8.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mailru_im_command_bot-0.1.7-py3-none-any.whl (8.2 kB view details)

Uploaded Python 3

File details

Details for the file mailru-im-command-bot-0.1.7.tar.gz.

File metadata

  • Download URL: mailru-im-command-bot-0.1.7.tar.gz
  • Upload date:
  • Size: 8.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.6 CPython/3.8.1 Darwin/20.3.0

File hashes

Hashes for mailru-im-command-bot-0.1.7.tar.gz
Algorithm Hash digest
SHA256 1f4e89383ba4b25d2232870ecd4bd71293a9400aee0b72a702935920418e4343
MD5 e27f25628ec8130f4570b75e3307e5d5
BLAKE2b-256 6f6910284ae9224bc551f977f2eed0e0f840ce818db1076ed90c0d1c7cdb11a4

See more details on using hashes here.

File details

Details for the file mailru_im_command_bot-0.1.7-py3-none-any.whl.

File metadata

File hashes

Hashes for mailru_im_command_bot-0.1.7-py3-none-any.whl
Algorithm Hash digest
SHA256 1692dac4012cd81cbce1beab37f7870fdca256520688869de01b5a8966e5ae0b
MD5 41eab0b066ccf2fe1b2d4c27e8712286
BLAKE2b-256 54919d54ab2a645aa79bd449ab12feb2847fe143fe08c95af86e827e89accf2b

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page