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:

from mailru_im_command_bot import CommandBot, MessageEnv
from logging import getLogger
import enum


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


bot = CommandBot(
    # you can provide any bot.Bot kwargs
    token='your_token_here',
    name='your_bot_name',
    version='your_bot_version',
    logger=getLogger(__name__),
    alert_to=['danila.fomin@corp.mail.ru'],
    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
    implicit_str_arg='test_str',  # optional
    bool_arg: bool = True,  # optional
) -> str:
    """your function help message"""
    ...
    return 'your result'

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

As argument type you can use str, float, int and any enum.Enum. Library automatically validates and casts strings to your types.

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
      implicit_str_arg: str = test_str
      bool_arg: True|False = True

Bot automatically writes access log with provided logger.

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

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.6.tar.gz (6.8 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.6-py3-none-any.whl (6.9 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: mailru-im-command-bot-0.1.6.tar.gz
  • Upload date:
  • Size: 6.8 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.6.tar.gz
Algorithm Hash digest
SHA256 1c7c8c9027e79499263e907e45a56aa7d19e639414aa6a7615f5af72f5094919
MD5 9d013a17ebcffc1e589db0bf41955a9c
BLAKE2b-256 c0b90365265ceeaf8f17d77213ccb901b06ce3099d894550951176484c2a7017

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for mailru_im_command_bot-0.1.6-py3-none-any.whl
Algorithm Hash digest
SHA256 93b3d89db4606b284fa2b31e1d273f823f00ba8092c46964a22266583360b0f9
MD5 a2f009912f9eccf1f51f9820cc134153
BLAKE2b-256 e4fd60045d42fdcd86669029fe2ac234efc3139b998202d7bb0c00f4fa30e0c6

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