telegram-crypto-price-bot


Nametelegram-crypto-price-bot JSON
Version 0.4.0 PyPI version JSON
download
home_pagehttps://github.com/ebellocchia/telegram_crypto_price_bot
SummaryTelegram bot for displaying cryptocurrencies price
upload_time2024-01-26 18:06:40
maintainerEmanuele Bellocchia
docs_urlNone
authorEmanuele Bellocchia
requires_python>=3.7
licenseMIT
keywords telegram bot telegram bot crypto crypto prices cryptocurrency cryptocurrency prices
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Telegram Crypto Price Bot

[![PyPI version](https://badge.fury.io/py/telegram-crypto-price-bot.svg)](https://badge.fury.io/py/telegram-crypto-price-bot)
[![Codacy Badge](https://app.codacy.com/project/badge/Grade/e494ae8a0df847ca85dc72305bdb3ffa)](https://app.codacy.com/gh/ebellocchia/telegram_crypto_price_bot/dashboard?utm_source=gh&utm_medium=referral&utm_content=&utm_campaign=Badge_grade)
[![CodeFactor](https://www.codefactor.io/repository/github/ebellocchia/telegram_crypto_price_bot/badge)](https://www.codefactor.io/repository/github/ebellocchia/telegram_crypto_price_bot)

Telegram bot for displaying cryptocurrencies prices and charts based on *pyrogram* and *matplotlib* libraries.\
Data is retrieved using CoinGecko APIs.\
It is possible to show coin information either on demand (by manually calling a command) or periodically using background tasks.\
A single bot instance can be used with multiple coins and in multiple groups.\
The usage of the bot is restricted to admins, in order to avoid users to flood the chat with price requests.

## Setup

### Create Telegram app

In order to use the bot, in addition to the bot token you also need an APP ID and hash.\
To get them, create an app using the following website: [https://my.telegram.org/apps](https://my.telegram.org/apps).

### Installation

The package requires Python 3, it is not compatible with Python 2.\
To install it:
- Using *setuptools*:

        python setup.py install

- Using *pip*:

        pip install telegram_crypto_price_bot

To run the bot, edit the configuration file by specifying the API ID/hash and bot token. Then, move to the *app* folder and run the *bot.py* script:

    cd app
    python bot.py

When run with no parameter, *conf/config.ini* will be the default configuration file (in this way it can be used for different groups).\
To specify a different configuration file:

    python bot.py -c another_conf.ini
    python bot.py --config another_conf.ini

Of course, the *app* folder can be moved elsewhere if needed.

## Configuration

An example of configuration file is provided in the *app/conf* folder.\
The list of all possible fields that can be set is shown below.

|Name|Description|
|---|---|
|**[pyrogram]**|Configuration for pyrogram|
|`session_name`|Session name of your choice|
|`api_id`|API ID from [https://my.telegram.org/apps](https://my.telegram.org/apps)|
|`api_hash`|API hash from [https://my.telegram.org/apps](https://my.telegram.org/apps)|
|`bot_token`|Bot token from BotFather|
|**[app]**|Configuration for app|
|`app_is_test_mode`|True to activate test mode false otherwise|
|`app_lang_file`|Language file in XML format (default: English)|
|**[task]**|Configuration for tasks|
|`tasks_max_num`|Maximum number of running tasks (totally, in all groups). Default: `20`.|
|**[coingecko]**|Configuration for Coingecko|
|`coingecko_api_key`|Key for using Coingecko APIs. If not specified, the free APIs will be used. Default: `empty string`.|
|**[chart]**|Configuration for price chart|
|`chart_display`|True to display price chart, false otherwise (default: true). If false, all the next fields will be skipped.|
|`chart_date_format`|Date format for price chart (default: `%%d/%%m/%%Y %%H:00`)|
|`chart_background_color`|Background color for price chart (default: `white`)|
|`chart_title_color`|Title color for price chart (default: `black`)|
|`chart_frame_color`|Frame color for price chart (default: `black`)|
|`chart_axes_color`|Axes color for price chart (default: `black`)|
|`chart_line_color`|Line color for price chart (default: `#3475AB`)|
|`chart_line_style`|Line style for price chart (default: `-`). Same as matplotlib line styles: `-` `--` `-.` `:`|
|`chart_line_width`|Line width for price chart (default: `1`)|
|`chart_display_grid`|True to display price chart grid, false otherwise (default: `true`). If false, all the next fields will be skipped.|
|`chart_grid_max_size`|Maximum size for price chart grid (default: `4`)|
|`chart_grid_color`|Line color for price chart grid (default: `#DFDFDF`)|
|`chart_grid_line_style`|Line style for price chart grid (default: `--`). Same as matplotlib line styles: `-` `--` `-.` `:`|
|`chart_grid_line_width`|Line width for price chart grid (default: `1`)|
|**[price]**|Configuration for price info|
|`price_display_market_cap`|True to display market cap, false otherwise (default: `true`)|
|`price_display_market_cap_rank`|True to display market cap rank, false otherwise (default: `false`)|
|**[logging]**|Configuration for logging|
|`log_level`|Log level, same of python logging (`DEBUG`, `INFO`, `WARNING`, `ERROR`, `CRITICAL`). Default: `INFO`.|
|`log_console_enabled`|True to enable logging to console, false otherwise (default: `true`)|
|`log_file_enabled`|True to enable logging to file, false otherwise (default: `false`). If false, all the next fields will be skipped.|
|`log_file_name`|Log file name|
|`log_file_use_rotating`|True for using a rotating log file, false otherwise|
|`log_file_max_bytes`|Maximum size in bytes for a log file. When reached, a new log file is created up to `log_file_backup_cnt`. Valid only if `log_file_use_rotating` is true.|
|`log_file_backup_cnt`|Maximum number of log files. Valid only if `log_file_use_rotating` is true.|
|`log_file_append`|True to append to log file, false to start from a new file each time. Valid only if `log_file_use_rotating` is false.|

All the colors can be either a name or a RGB color in format `#RRGGBB` (same as matplotlib colors).\
Chart and price configurations will be applied to all coin information in all groups. It's not possible to configure a single coin.

## Supported Commands

List of supported commands:
- `/help`: show this message
- `/alive`: show if bot is active
- `/pricebot_set_test_mode true/false`: enable/disable test mode
- `/pricebot_is_test_mode`: show if test mode is enabled
- `/pricebot_version`: show bot version
- `/pricebot_get_single COIN_ID COIN_VS LAST_DAYS [SAME_MSG]`: show chart and price information of the specified pair (single call).\
Parameters:
    - `COIN_ID`: CoinGecko *ID*
    - `COIN_VS`: CoinGecko *vs_currency*
    - `LAST_DAYS`: Last number of days to show price chart
    - `SAME_MSG` (optional): true for sending chart and price information in the same message (price information will be a caption of the chart image), false to send them in separate messages. Default value: true.
- `/pricebot_task_start PERIOD_HOURS START_HOUR COIN_ID COIN_VS LAST_DAYS`: start a price task in the current chat. If the task `COIN_ID/COIN_VS` already exists in the current chat, an error message will be shown. To start it again, it shall be stopped with the `pricebot_task_stop` command.\
Parameters:
    - `PERIOD_HOURS`: Task period in hours, it shall be between 1 and 24
    - `START_HOUR`: Task start hour, it shall be between 0 and 23
    - `COIN_ID`: CoinGecko *ID*
    - `COIN_VS`: CoinGecko *vs_currency*
    - `LAST_DAYS`: Last number of days to show price chart
- `/pricebot_task_stop COIN_ID COIN_VS`: stop the specified price task in the current chat. If the task `COIN_ID/COIN_VS` does not exist in the current chat, an error message will be shown.\
Parameters:
    - `COIN_ID`: CoinGecko *ID*
    - `COIN_VS`: CoinGecko *vs_currency*
- `/pricebot_task_stop_all`: stop all price tasks in the current chat
- `/pricebot_task_pause COIN_ID COIN_VS`: pause the specified price task in the current chat. If the task `COIN_ID/COIN_VS` does not exist in the current chat, an error message will be shown.\
Parameters:
    - `COIN_ID`: CoinGecko *ID*
    - `COIN_VS`: CoinGecko *vs_currency*
- `/pricebot_task_resume COIN_ID COIN_VS`: resume the specified price task in the current chat. If the task `COIN_ID/COIN_VS` does not exist in the current chat, an error message will be shown.\
Parameters:
    - `COIN_ID`: CoinGecko *ID*
    - `COIN_VS`: CoinGecko *vs_currency*
- `/pricebot_task_send_in_same_msg COIN_ID COIN_VS true/false`: enable/disable the sending of chart and price information in the same message. If the task `COIN_ID/COIN_VS` does not exist in the current chat, an error message will be shown.\
Parameters:
    - `COIN_ID`: CoinGecko *ID*
    - `COIN_VS`: CoinGecko *vs_currency*
    - `flag`: true for sending chart and price information in the same message (price information will be a caption of the chart image), false to send them in separate messages
- `/pricebot_task_delete_last_msg COIN_ID COIN_VS true/false`: enable/disable the deletion of last messages for the specified price task in the current chat. If the task `COIN_ID/COIN_VS` does not exist in the current chat, an error message will be shown.\
Parameters:
    - `COIN_ID`: CoinGecko *ID*
    - `COIN_VS`: CoinGecko *vs_currency*
    - `flag`: true or false
- `/pricebot_task_info`: show the list of active price tasks in the current chat

By default:
- a price task will send chart and price information in the same message. This can be enabled/disabled with the `pricebot_task_send_in_same_msg` command.
- a price task will delete the last sent message when sending a new one. This can be enabled/disabled with the `pricebot_task_delete_last_msg` command.

The task period starts from the specified starting hour (be sure to set the correct time on the VPS), for example:
- A task period of 8 hours starting from 00:00 will send the message at: 00:00, 08:00 and 16:00
- A task period of 6 hours starting from 08:00 will send the message at: 08:00, 14:00, 20:00 and 02:00

In case of API errors (e.g. network issues or invalid coin ID) an error message will be shown.

**Examples**

Show the price of BTC/USD of the last 14 days in the current chat (single call):

    /pricebot_get_single bitcoin usd 14

Show the price of ETH/BTC of the last 30 days periodically every 8 hours starting from 10:00 in the current chat:

    /pricebot_task_start 8 10 ethereum btc 30

Pause/Resume/Stop the previous task:

    /pricebot_task_pause ethereum btc
    /pricebot_task_resume ethereum btc
    /pricebot_task_stop ethereum btc

Set task so that it sends chart and price information in the same message:

    /pricebot_task_send_in_same_msg ethereum btc true

Set task so that it doesn't delete the last sent message:

    /pricebot_task_delete_last_msg ethereum btc false

## Run the Bot

It'd be better if the bot is an administrator of the group. This is mandatory if it needs to delete the last sent messages.\
In order to display prices periodically, the bot shall run 24h/24h so it's suggested to run it on a VPS (there is no performance requirements, so a cheap VPS will suffice).

## Test Mode

During test mode, the bot will work as usual but the task period will be applied in minutes instead of hours. This allows to quickly check if it is working.

## Translation

The messages sent by the bot on Telegram can be translated into different languages (the default language is English) by providing a custom XML file.\
The XML file path is specified in the configuration file (`app_lang_file` field).\
An example XML file in italian is provided in the folder *app/lang*.

## Image Examples

Example with chart and price information on different messages:

<img src="https://github.com/ebellocchia/telegram_crypto_price_bot/blob/master/img/example_diff_msg.png" width="500px">

Example with chart and price information on the same message:

<img src="https://github.com/ebellocchia/telegram_crypto_price_bot/blob/master/img/example_same_msg.png" width="500px">

# License

This software is available under the MIT license.

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/ebellocchia/telegram_crypto_price_bot",
    "name": "telegram-crypto-price-bot",
    "maintainer": "Emanuele Bellocchia",
    "docs_url": null,
    "requires_python": ">=3.7",
    "maintainer_email": "ebellocchia@gmail.com",
    "keywords": "telegram,bot,telegram bot,crypto,crypto prices,cryptocurrency,cryptocurrency prices",
    "author": "Emanuele Bellocchia",
    "author_email": "ebellocchia@gmail.com",
    "download_url": "https://files.pythonhosted.org/packages/9a/53/02c9cc652bd08d005eda158f7ab94e85bf2a9ec58c7b71378bb99c7165c2/telegram_crypto_price_bot-0.4.0.tar.gz",
    "platform": "any",
    "description": "# Telegram Crypto Price Bot\r\n\r\n[![PyPI version](https://badge.fury.io/py/telegram-crypto-price-bot.svg)](https://badge.fury.io/py/telegram-crypto-price-bot)\r\n[![Codacy Badge](https://app.codacy.com/project/badge/Grade/e494ae8a0df847ca85dc72305bdb3ffa)](https://app.codacy.com/gh/ebellocchia/telegram_crypto_price_bot/dashboard?utm_source=gh&utm_medium=referral&utm_content=&utm_campaign=Badge_grade)\r\n[![CodeFactor](https://www.codefactor.io/repository/github/ebellocchia/telegram_crypto_price_bot/badge)](https://www.codefactor.io/repository/github/ebellocchia/telegram_crypto_price_bot)\r\n\r\nTelegram bot for displaying cryptocurrencies prices and charts based on *pyrogram* and *matplotlib* libraries.\\\r\nData is retrieved using CoinGecko APIs.\\\r\nIt is possible to show coin information either on demand (by manually calling a command) or periodically using background tasks.\\\r\nA single bot instance can be used with multiple coins and in multiple groups.\\\r\nThe usage of the bot is restricted to admins, in order to avoid users to flood the chat with price requests.\r\n\r\n## Setup\r\n\r\n### Create Telegram app\r\n\r\nIn order to use the bot, in addition to the bot token you also need an APP ID and hash.\\\r\nTo get them, create an app using the following website: [https://my.telegram.org/apps](https://my.telegram.org/apps).\r\n\r\n### Installation\r\n\r\nThe package requires Python 3, it is not compatible with Python 2.\\\r\nTo install it:\r\n- Using *setuptools*:\r\n\r\n        python setup.py install\r\n\r\n- Using *pip*:\r\n\r\n        pip install telegram_crypto_price_bot\r\n\r\nTo run the bot, edit the configuration file by specifying the API ID/hash and bot token. Then, move to the *app* folder and run the *bot.py* script:\r\n\r\n    cd app\r\n    python bot.py\r\n\r\nWhen run with no parameter, *conf/config.ini* will be the default configuration file (in this way it can be used for different groups).\\\r\nTo specify a different configuration file:\r\n\r\n    python bot.py -c another_conf.ini\r\n    python bot.py --config another_conf.ini\r\n\r\nOf course, the *app* folder can be moved elsewhere if needed.\r\n\r\n## Configuration\r\n\r\nAn example of configuration file is provided in the *app/conf* folder.\\\r\nThe list of all possible fields that can be set is shown below.\r\n\r\n|Name|Description|\r\n|---|---|\r\n|**[pyrogram]**|Configuration for pyrogram|\r\n|`session_name`|Session name of your choice|\r\n|`api_id`|API ID from [https://my.telegram.org/apps](https://my.telegram.org/apps)|\r\n|`api_hash`|API hash from [https://my.telegram.org/apps](https://my.telegram.org/apps)|\r\n|`bot_token`|Bot token from BotFather|\r\n|**[app]**|Configuration for app|\r\n|`app_is_test_mode`|True to activate test mode false otherwise|\r\n|`app_lang_file`|Language file in XML format (default: English)|\r\n|**[task]**|Configuration for tasks|\r\n|`tasks_max_num`|Maximum number of running tasks (totally, in all groups). Default: `20`.|\r\n|**[coingecko]**|Configuration for Coingecko|\r\n|`coingecko_api_key`|Key for using Coingecko APIs. If not specified, the free APIs will be used. Default: `empty string`.|\r\n|**[chart]**|Configuration for price chart|\r\n|`chart_display`|True to display price chart, false otherwise (default: true). If false, all the next fields will be skipped.|\r\n|`chart_date_format`|Date format for price chart (default: `%%d/%%m/%%Y %%H:00`)|\r\n|`chart_background_color`|Background color for price chart (default: `white`)|\r\n|`chart_title_color`|Title color for price chart (default: `black`)|\r\n|`chart_frame_color`|Frame color for price chart (default: `black`)|\r\n|`chart_axes_color`|Axes color for price chart (default: `black`)|\r\n|`chart_line_color`|Line color for price chart (default: `#3475AB`)|\r\n|`chart_line_style`|Line style for price chart (default: `-`). Same as matplotlib line styles: `-` `--` `-.` `:`|\r\n|`chart_line_width`|Line width for price chart (default: `1`)|\r\n|`chart_display_grid`|True to display price chart grid, false otherwise (default: `true`). If false, all the next fields will be skipped.|\r\n|`chart_grid_max_size`|Maximum size for price chart grid (default: `4`)|\r\n|`chart_grid_color`|Line color for price chart grid (default: `#DFDFDF`)|\r\n|`chart_grid_line_style`|Line style for price chart grid (default: `--`). Same as matplotlib line styles: `-` `--` `-.` `:`|\r\n|`chart_grid_line_width`|Line width for price chart grid (default: `1`)|\r\n|**[price]**|Configuration for price info|\r\n|`price_display_market_cap`|True to display market cap, false otherwise (default: `true`)|\r\n|`price_display_market_cap_rank`|True to display market cap rank, false otherwise (default: `false`)|\r\n|**[logging]**|Configuration for logging|\r\n|`log_level`|Log level, same of python logging (`DEBUG`, `INFO`, `WARNING`, `ERROR`, `CRITICAL`). Default: `INFO`.|\r\n|`log_console_enabled`|True to enable logging to console, false otherwise (default: `true`)|\r\n|`log_file_enabled`|True to enable logging to file, false otherwise (default: `false`). If false, all the next fields will be skipped.|\r\n|`log_file_name`|Log file name|\r\n|`log_file_use_rotating`|True for using a rotating log file, false otherwise|\r\n|`log_file_max_bytes`|Maximum size in bytes for a log file. When reached, a new log file is created up to `log_file_backup_cnt`. Valid only if `log_file_use_rotating` is true.|\r\n|`log_file_backup_cnt`|Maximum number of log files. Valid only if `log_file_use_rotating` is true.|\r\n|`log_file_append`|True to append to log file, false to start from a new file each time. Valid only if `log_file_use_rotating` is false.|\r\n\r\nAll the colors can be either a name or a RGB color in format `#RRGGBB` (same as matplotlib colors).\\\r\nChart and price configurations will be applied to all coin information in all groups. It's not possible to configure a single coin.\r\n\r\n## Supported Commands\r\n\r\nList of supported commands:\r\n- `/help`: show this message\r\n- `/alive`: show if bot is active\r\n- `/pricebot_set_test_mode true/false`: enable/disable test mode\r\n- `/pricebot_is_test_mode`: show if test mode is enabled\r\n- `/pricebot_version`: show bot version\r\n- `/pricebot_get_single COIN_ID COIN_VS LAST_DAYS [SAME_MSG]`: show chart and price information of the specified pair (single call).\\\r\nParameters:\r\n    - `COIN_ID`: CoinGecko *ID*\r\n    - `COIN_VS`: CoinGecko *vs_currency*\r\n    - `LAST_DAYS`: Last number of days to show price chart\r\n    - `SAME_MSG` (optional): true for sending chart and price information in the same message (price information will be a caption of the chart image), false to send them in separate messages. Default value: true.\r\n- `/pricebot_task_start PERIOD_HOURS START_HOUR COIN_ID COIN_VS LAST_DAYS`: start a price task in the current chat. If the task `COIN_ID/COIN_VS` already exists in the current chat, an error message will be shown. To start it again, it shall be stopped with the `pricebot_task_stop` command.\\\r\nParameters:\r\n    - `PERIOD_HOURS`: Task period in hours, it shall be between 1 and 24\r\n    - `START_HOUR`: Task start hour, it shall be between 0 and 23\r\n    - `COIN_ID`: CoinGecko *ID*\r\n    - `COIN_VS`: CoinGecko *vs_currency*\r\n    - `LAST_DAYS`: Last number of days to show price chart\r\n- `/pricebot_task_stop COIN_ID COIN_VS`: stop the specified price task in the current chat. If the task `COIN_ID/COIN_VS` does not exist in the current chat, an error message will be shown.\\\r\nParameters:\r\n    - `COIN_ID`: CoinGecko *ID*\r\n    - `COIN_VS`: CoinGecko *vs_currency*\r\n- `/pricebot_task_stop_all`: stop all price tasks in the current chat\r\n- `/pricebot_task_pause COIN_ID COIN_VS`: pause the specified price task in the current chat. If the task `COIN_ID/COIN_VS` does not exist in the current chat, an error message will be shown.\\\r\nParameters:\r\n    - `COIN_ID`: CoinGecko *ID*\r\n    - `COIN_VS`: CoinGecko *vs_currency*\r\n- `/pricebot_task_resume COIN_ID COIN_VS`: resume the specified price task in the current chat. If the task `COIN_ID/COIN_VS` does not exist in the current chat, an error message will be shown.\\\r\nParameters:\r\n    - `COIN_ID`: CoinGecko *ID*\r\n    - `COIN_VS`: CoinGecko *vs_currency*\r\n- `/pricebot_task_send_in_same_msg COIN_ID COIN_VS true/false`: enable/disable the sending of chart and price information in the same message. If the task `COIN_ID/COIN_VS` does not exist in the current chat, an error message will be shown.\\\r\nParameters:\r\n    - `COIN_ID`: CoinGecko *ID*\r\n    - `COIN_VS`: CoinGecko *vs_currency*\r\n    - `flag`: true for sending chart and price information in the same message (price information will be a caption of the chart image), false to send them in separate messages\r\n- `/pricebot_task_delete_last_msg COIN_ID COIN_VS true/false`: enable/disable the deletion of last messages for the specified price task in the current chat. If the task `COIN_ID/COIN_VS` does not exist in the current chat, an error message will be shown.\\\r\nParameters:\r\n    - `COIN_ID`: CoinGecko *ID*\r\n    - `COIN_VS`: CoinGecko *vs_currency*\r\n    - `flag`: true or false\r\n- `/pricebot_task_info`: show the list of active price tasks in the current chat\r\n\r\nBy default:\r\n- a price task will send chart and price information in the same message. This can be enabled/disabled with the `pricebot_task_send_in_same_msg` command.\r\n- a price task will delete the last sent message when sending a new one. This can be enabled/disabled with the `pricebot_task_delete_last_msg` command.\r\n\r\nThe task period starts from the specified starting hour (be sure to set the correct time on the VPS), for example:\r\n- A task period of 8 hours starting from 00:00 will send the message at: 00:00, 08:00 and 16:00\r\n- A task period of 6 hours starting from 08:00 will send the message at: 08:00, 14:00, 20:00 and 02:00\r\n\r\nIn case of API errors (e.g. network issues or invalid coin ID) an error message will be shown.\r\n\r\n**Examples**\r\n\r\nShow the price of BTC/USD of the last 14 days in the current chat (single call):\r\n\r\n    /pricebot_get_single bitcoin usd 14\r\n\r\nShow the price of ETH/BTC of the last 30 days periodically every 8 hours starting from 10:00 in the current chat:\r\n\r\n    /pricebot_task_start 8 10 ethereum btc 30\r\n\r\nPause/Resume/Stop the previous task:\r\n\r\n    /pricebot_task_pause ethereum btc\r\n    /pricebot_task_resume ethereum btc\r\n    /pricebot_task_stop ethereum btc\r\n\r\nSet task so that it sends chart and price information in the same message:\r\n\r\n    /pricebot_task_send_in_same_msg ethereum btc true\r\n\r\nSet task so that it doesn't delete the last sent message:\r\n\r\n    /pricebot_task_delete_last_msg ethereum btc false\r\n\r\n## Run the Bot\r\n\r\nIt'd be better if the bot is an administrator of the group. This is mandatory if it needs to delete the last sent messages.\\\r\nIn order to display prices periodically, the bot shall run 24h/24h so it's suggested to run it on a VPS (there is no performance requirements, so a cheap VPS will suffice).\r\n\r\n## Test Mode\r\n\r\nDuring test mode, the bot will work as usual but the task period will be applied in minutes instead of hours. This allows to quickly check if it is working.\r\n\r\n## Translation\r\n\r\nThe messages sent by the bot on Telegram can be translated into different languages (the default language is English) by providing a custom XML file.\\\r\nThe XML file path is specified in the configuration file (`app_lang_file` field).\\\r\nAn example XML file in italian is provided in the folder *app/lang*.\r\n\r\n## Image Examples\r\n\r\nExample with chart and price information on different messages:\r\n\r\n<img src=\"https://github.com/ebellocchia/telegram_crypto_price_bot/blob/master/img/example_diff_msg.png\" width=\"500px\">\r\n\r\nExample with chart and price information on the same message:\r\n\r\n<img src=\"https://github.com/ebellocchia/telegram_crypto_price_bot/blob/master/img/example_same_msg.png\" width=\"500px\">\r\n\r\n# License\r\n\r\nThis software is available under the MIT license.\r\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "Telegram bot for displaying cryptocurrencies price",
    "version": "0.4.0",
    "project_urls": {
        "Download": "https://github.com/ebellocchia/telegram_crypto_price_bot/archive/v0.4.0.tar.gz",
        "Homepage": "https://github.com/ebellocchia/telegram_crypto_price_bot"
    },
    "split_keywords": [
        "telegram",
        "bot",
        "telegram bot",
        "crypto",
        "crypto prices",
        "cryptocurrency",
        "cryptocurrency prices"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "4f515fcba2c791ee54eaf962e21f56655ccc8fc25d7e23c2cbda386096178cd0",
                "md5": "160b276e3d3de4984f792ef98d687717",
                "sha256": "f92ef62a1f61b716e17eb454084d4ed69467f013acbdfb51fe1fec511d4acf86"
            },
            "downloads": -1,
            "filename": "telegram_crypto_price_bot-0.4.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "160b276e3d3de4984f792ef98d687717",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.7",
            "size": 74320,
            "upload_time": "2024-01-26T18:06:38",
            "upload_time_iso_8601": "2024-01-26T18:06:38.642958Z",
            "url": "https://files.pythonhosted.org/packages/4f/51/5fcba2c791ee54eaf962e21f56655ccc8fc25d7e23c2cbda386096178cd0/telegram_crypto_price_bot-0.4.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "9a5302c9cc652bd08d005eda158f7ab94e85bf2a9ec58c7b71378bb99c7165c2",
                "md5": "968b2a5d874d44a831edd026e6b95ed8",
                "sha256": "46c2eba89fe9b93774904017ea3971476560ca394fda5930327c27c8f55844d9"
            },
            "downloads": -1,
            "filename": "telegram_crypto_price_bot-0.4.0.tar.gz",
            "has_sig": false,
            "md5_digest": "968b2a5d874d44a831edd026e6b95ed8",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.7",
            "size": 38292,
            "upload_time": "2024-01-26T18:06:40",
            "upload_time_iso_8601": "2024-01-26T18:06:40.498242Z",
            "url": "https://files.pythonhosted.org/packages/9a/53/02c9cc652bd08d005eda158f7ab94e85bf2a9ec58c7b71378bb99c7165c2/telegram_crypto_price_bot-0.4.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-01-26 18:06:40",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "ebellocchia",
    "github_project": "telegram_crypto_price_bot",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "requirements": [],
    "tox": true,
    "lcname": "telegram-crypto-price-bot"
}
        
Elapsed time: 0.17538s