botik


Namebotik JSON
Version 0.0.2 PyPI version JSON
download
home_page
SummaryBotik core package
upload_time2023-04-14 13:48:29
maintainer
docs_urlNone
author
requires_python>=3.7
license
keywords api framework bot messenger async botik
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Botik

Botik позволяет вам писать код для ботов, одновременно исполняемый на разных мессенджерах.
Так же вам предлагается перейти от типичного написания функций-хендлеров на новую абстракцию страниц.

[Техническая документация](https://botik.readthedocs.io)

## Установка

```python
# Telegram
pip install botik-telebot
# VK
pip install botik-vkbottle
```

## Пример кода страницы

Ваше приложение на Botik будет представлять собой набор страниц.
Страница — это объект для обработки пользовательского ввода и вывода.

```python
class ExamplePage(Page):
    async def make_page_content(self, user):
        text = "Пример страницы"
        
        # ButtonCallback ожидает асинхронный метод с первым аргументом user,
        # и всеми последующими с явным указанием их имен
        self.markup.add_row([
            ButtonData("Нажми меня!", ButtonCallback(self.send, message="Привет, мир!"))
        ])
        self.markup.add_row([
            ButtonData("Back", ButtonCallback(navigator.get_back)),
            ButtonData("Home", ButtonCallback(navigator.change_page, path=f"~/"))
        ])
        
        await self.send(user, text, markup=True)
```

## Запуск бота

### Создаем два модуля-входных точек для нашего приложения.

Сперва инициализируем Backbone фреймворк для работы с мессенджером и прокидываем его в конструктор ядра приложения.

```python
# Telegram
from telebot.async_telebot import AsyncTeleBot
from botik_telebot.app import TgApp

token = "токен бота"
bot = AsyncTeleBot(token)

app = TgApp(bot)
```

```python
# VK
from vkbottle import API
from vkbottle.bot import Bot
from botik_vkbottle.app import VkApp

token = "токен бота"

# Текущая реализация фреймворка требует ссылки на High и Low Level API
bot = Bot(token=token)
low_api = API(token)

app = VkApp(bot, low_api)
```

### Создаем экземпляры, описывающие наши будущие страницы

```python
# Первым аргументом тип страницы, вторым относительный адрес, третьим адрес или объект родительской страницы
main_data = PageData(MainPage, '/', '', inline=True, one_time=True)
page1 = PageData(FirstPage, '/page1', main_data, inline=False, one_time=False)
# ...

# Собираем их в список
pages = [main_data, page1]
```

### Устанавливаем странички и запускаем приложение!

```python
app.set_pages(pages)

app.start()
```

###### Основан на [pyTelegramBotAPI](https://github.com/eternnoir/pyTelegramBotAPI) и [VKBottle](https://github.com/vkbottle/vkbottle)

            

Raw data

            {
    "_id": null,
    "home_page": "",
    "name": "botik",
    "maintainer": "",
    "docs_url": null,
    "requires_python": ">=3.7",
    "maintainer_email": "",
    "keywords": "api,framework,bot,messenger,async,botik",
    "author": "",
    "author_email": "dasstyx <dasstyx@gmail.com>",
    "download_url": "https://files.pythonhosted.org/packages/4f/90/efff7ca79655f22bb99841836d8da6dc333e9fa4417b83eae4fc5d818175/botik-0.0.2.tar.gz",
    "platform": null,
    "description": "# Botik\r\n\r\nBotik \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u0430\u043c \u043f\u0438\u0441\u0430\u0442\u044c \u043a\u043e\u0434 \u0434\u043b\u044f \u0431\u043e\u0442\u043e\u0432, \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u0439 \u043d\u0430 \u0440\u0430\u0437\u043d\u044b\u0445 \u043c\u0435\u0441\u0441\u0435\u043d\u0434\u0436\u0435\u0440\u0430\u0445.\r\n\u0422\u0430\u043a \u0436\u0435 \u0432\u0430\u043c \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u043e\u0442 \u0442\u0438\u043f\u0438\u0447\u043d\u043e\u0433\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0439-\u0445\u0435\u043d\u0434\u043b\u0435\u0440\u043e\u0432 \u043d\u0430 \u043d\u043e\u0432\u0443\u044e \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0446\u0438\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446.\r\n\r\n[\u0422\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f](https://botik.readthedocs.io)\r\n\r\n## \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430\r\n\r\n```python\r\n# Telegram\r\npip install botik-telebot\r\n# VK\r\npip install botik-vkbottle\r\n```\r\n\r\n## \u041f\u0440\u0438\u043c\u0435\u0440 \u043a\u043e\u0434\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b\r\n\r\n\u0412\u0430\u0448\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043d\u0430 Botik \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u0441\u043e\u0431\u043e\u0439 \u043d\u0430\u0431\u043e\u0440 \u0441\u0442\u0440\u0430\u043d\u0438\u0446.\r\n\u0421\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u2014 \u044d\u0442\u043e \u043e\u0431\u044a\u0435\u043a\u0442 \u0434\u043b\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u0432\u0432\u043e\u0434\u0430 \u0438 \u0432\u044b\u0432\u043e\u0434\u0430.\r\n\r\n```python\r\nclass ExamplePage(Page):\r\n    async def make_page_content(self, user):\r\n        text = \"\u041f\u0440\u0438\u043c\u0435\u0440 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b\"\r\n        \r\n        # ButtonCallback \u043e\u0436\u0438\u0434\u0430\u0435\u0442 \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u044b\u0439 \u043c\u0435\u0442\u043e\u0434 \u0441 \u043f\u0435\u0440\u0432\u044b\u043c \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u043c user,\r\n        # \u0438 \u0432\u0441\u0435\u043c\u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c\u0438 \u0441 \u044f\u0432\u043d\u044b\u043c \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u0435\u043c \u0438\u0445 \u0438\u043c\u0435\u043d\r\n        self.markup.add_row([\r\n            ButtonData(\"\u041d\u0430\u0436\u043c\u0438 \u043c\u0435\u043d\u044f!\", ButtonCallback(self.send, message=\"\u041f\u0440\u0438\u0432\u0435\u0442, \u043c\u0438\u0440!\"))\r\n        ])\r\n        self.markup.add_row([\r\n            ButtonData(\"Back\", ButtonCallback(navigator.get_back)),\r\n            ButtonData(\"Home\", ButtonCallback(navigator.change_page, path=f\"~/\"))\r\n        ])\r\n        \r\n        await self.send(user, text, markup=True)\r\n```\r\n\r\n## \u0417\u0430\u043f\u0443\u0441\u043a \u0431\u043e\u0442\u0430\r\n\r\n### \u0421\u043e\u0437\u0434\u0430\u0435\u043c \u0434\u0432\u0430 \u043c\u043e\u0434\u0443\u043b\u044f-\u0432\u0445\u043e\u0434\u043d\u044b\u0445 \u0442\u043e\u0447\u0435\u043a \u0434\u043b\u044f \u043d\u0430\u0448\u0435\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f.\r\n\r\n\u0421\u043f\u0435\u0440\u0432\u0430 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u043c Backbone \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043c\u0435\u0441\u0441\u0435\u043d\u0434\u0436\u0435\u0440\u043e\u043c \u0438 \u043f\u0440\u043e\u043a\u0438\u0434\u044b\u0432\u0430\u0435\u043c \u0435\u0433\u043e \u0432 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440 \u044f\u0434\u0440\u0430 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f.\r\n\r\n```python\r\n# Telegram\r\nfrom telebot.async_telebot import AsyncTeleBot\r\nfrom botik_telebot.app import TgApp\r\n\r\ntoken = \"\u0442\u043e\u043a\u0435\u043d \u0431\u043e\u0442\u0430\"\r\nbot = AsyncTeleBot(token)\r\n\r\napp = TgApp(bot)\r\n```\r\n\r\n```python\r\n# VK\r\nfrom vkbottle import API\r\nfrom vkbottle.bot import Bot\r\nfrom botik_vkbottle.app import VkApp\r\n\r\ntoken = \"\u0442\u043e\u043a\u0435\u043d \u0431\u043e\u0442\u0430\"\r\n\r\n# \u0422\u0435\u043a\u0443\u0449\u0430\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0430 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0441\u0441\u044b\u043b\u043a\u0438 \u043d\u0430 High \u0438 Low Level API\r\nbot = Bot(token=token)\r\nlow_api = API(token)\r\n\r\napp = VkApp(bot, low_api)\r\n```\r\n\r\n### \u0421\u043e\u0437\u0434\u0430\u0435\u043c \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u044b, \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0449\u0438\u0435 \u043d\u0430\u0448\u0438 \u0431\u0443\u0434\u0443\u0449\u0438\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b\r\n\r\n```python\r\n# \u041f\u0435\u0440\u0432\u044b\u043c \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u043c \u0442\u0438\u043f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u0432\u0442\u043e\u0440\u044b\u043c \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0430\u0434\u0440\u0435\u0441, \u0442\u0440\u0435\u0442\u044c\u0438\u043c \u0430\u0434\u0440\u0435\u0441 \u0438\u043b\u0438 \u043e\u0431\u044a\u0435\u043a\u0442 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b\r\nmain_data = PageData(MainPage, '/', '', inline=True, one_time=True)\r\npage1 = PageData(FirstPage, '/page1', main_data, inline=False, one_time=False)\r\n# ...\r\n\r\n# \u0421\u043e\u0431\u0438\u0440\u0430\u0435\u043c \u0438\u0445 \u0432 \u0441\u043f\u0438\u0441\u043e\u043a\r\npages = [main_data, page1]\r\n```\r\n\r\n### \u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0441\u0442\u0440\u0430\u043d\u0438\u0447\u043a\u0438 \u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435!\r\n\r\n```python\r\napp.set_pages(pages)\r\n\r\napp.start()\r\n```\r\n\r\n###### \u041e\u0441\u043d\u043e\u0432\u0430\u043d \u043d\u0430 [pyTelegramBotAPI](https://github.com/eternnoir/pyTelegramBotAPI) \u0438 [VKBottle](https://github.com/vkbottle/vkbottle)\r\n",
    "bugtrack_url": null,
    "license": "",
    "summary": "Botik core package",
    "version": "0.0.2",
    "split_keywords": [
        "api",
        "framework",
        "bot",
        "messenger",
        "async",
        "botik"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "2806c03a78f8e676e25f26d9c17c67c8b5a5b3cc5230e3e903567cce9d48be8a",
                "md5": "fa5f65709cd2e0fed3abf393ea93288a",
                "sha256": "73d587e57d50fe9ff26fe217d1a1f4f762fb711948ff1dec770ecc78c2d2d72f"
            },
            "downloads": -1,
            "filename": "botik-0.0.2-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "fa5f65709cd2e0fed3abf393ea93288a",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.7",
            "size": 17744,
            "upload_time": "2023-04-14T13:48:25",
            "upload_time_iso_8601": "2023-04-14T13:48:25.777611Z",
            "url": "https://files.pythonhosted.org/packages/28/06/c03a78f8e676e25f26d9c17c67c8b5a5b3cc5230e3e903567cce9d48be8a/botik-0.0.2-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "4f90efff7ca79655f22bb99841836d8da6dc333e9fa4417b83eae4fc5d818175",
                "md5": "1fe625546ca83fc5c25f1e911ce45f0c",
                "sha256": "f5428437c5e4f5dcead89ce3ba4ad0f436af8b82be9935e610fbb260a0096751"
            },
            "downloads": -1,
            "filename": "botik-0.0.2.tar.gz",
            "has_sig": false,
            "md5_digest": "1fe625546ca83fc5c25f1e911ce45f0c",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.7",
            "size": 13233,
            "upload_time": "2023-04-14T13:48:29",
            "upload_time_iso_8601": "2023-04-14T13:48:29.180124Z",
            "url": "https://files.pythonhosted.org/packages/4f/90/efff7ca79655f22bb99841836d8da6dc333e9fa4417b83eae4fc5d818175/botik-0.0.2.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2023-04-14 13:48:29",
    "github": false,
    "gitlab": false,
    "bitbucket": false,
    "lcname": "botik"
}
        
Elapsed time: 0.43789s