A fully customizable modular Telegram bot written in Python using python-telegram-bot to help in Custom Rom support groups in getting info about their Officially Supported Devices.
git clone https://github.com/PrajjuS/CustomRomBot
cd CustomRomBotpip install -r requirements.txtmv sample_config.yaml config.yamlbot_token: The API token for your Telegram bot.gh_token: Your GitHub Personal Access Token.rom_name: The name of the Custom Rom.channel_username: The username of the Rom's Telegram channel (without the @ symbol).support_group_username: The username of the Rom's Telegram support group (without the @ symbol).website_url: The official website URL of the Rom.official_devices_repo: The repository URL containing the list of officially supported devices in the formatusername/repo_name(withouthttps://github.com).device_json_paths: A list of file paths where device JSON files are present.show_device_infos_of_all_paths: Boolean (true/false) that specifies whether to display information from all JSON paths indevice_json_pathsor not (Use it only if there are multiple paths).device_json_structure: The structure of the Rom's device JSON files.message_format: Template for bot's message using placeholders corresponding to fields in the device JSON that usesmarkdown formatting(Refer the placeholder and formatting rules below for more info).Placeholder Rules
When creating the
message_format, you can use placeholders to dynamically populate the bot’s message. Below are the rules for using placeholders:Device JSON Placeholders
- These are the placeholders which corresponding to the fields in the device JSON provided in the config and will be replaced by the values extracted from the JSON file. .
- Example: If your JSON contains a field named
device_name, you can include it in the message format as{device_name}.
*Device Name:* `{device_name}` *Version:* `{version}` *Maintainer:* `{maintainer}`Bot-Generated Placeholders
- These placeholders are generated by bot dynamically based on pre-defined logic and can be used in your message format and are prefixed by
bot. - Example: You can use
{bot_placeholder}in your message format to get the bot generated value. - The following are the placeholders which are currently available:
{bot_codename}: This placeholder fetches and returns the codename of the device.
*Device Codename:* `{bot_codename}`- These placeholders are generated by bot dynamically based on pre-defined logic and can be used in your message format and are prefixed by
Formatting Rules
- Bold Text: Wrap text in asterisk
*(eg:*bold*). - Italic Text: Wrap text in underscore
_(eg:_italic_). - Code: Wrap text in backticks
`(eg:`code`). - Code Blocks: Use triple backticks
```for code blocks (eg:```code block```). - Lists: Use
-or*for unordered lists, and1.for ordered lists (eg:- List). - Links: Format links using
[text](URL)(eg:[Google](https://www.google.com)). - Buttons: Create buttons using
[[text | URL]](eg:[[Google | https://google.com ]]).To add multiple buttons in a single line:
[[Button Text | URL]][[Another Button | URL]]
To add multiple buttons in multiple lines:
[[Button Text | URL]][[Another Button | URL]]
NOTE: You can refer the example yaml configs below.
Example config.yaml
bot_token: "123123123:ssfasjhdfajkshdfjaskhsAASDASDfad"gh_token: "asdjhfgaskjdhfgjkashdgf"rom_name: "Project-Elixir"channel_username: "Elixir_Updates"support_group_username: "Elixir_Discussion"website_url: "https://projectelixiros.com"official_devices_repo: "ProjectElixir-Devices/official_devices"device_json_paths:
- "builds"show_device_info_of_all_paths: falsedevice_json_structure: {"error": ,"filename": "","datetime": ,"size": ,"url": "","filehash": "","version": "","id": "","tg_username": "","device_name": "","device": "","xda_thread": "","is_active":
}message_template: | *Project Elixir {version} for {device_name}* *(*`{device}`*)* *Maintainer:* [{tg_username}](https://t.me/{tg_username}) *Latest Build:* `{filename}` *Is Active:* `{is_active}` *Do consider donating if you want to appreciate our work* *UPI:* `dwarmachine24@oksbi` [[Paypal | https://www.paypal.me/uglykid24]] [[BMC | https://www.buymeacoffee.com/uglykid]] [[Patreon | https://www.patreon.com/join/uglykid24]] [[Changelog | https://github.com/ProjectElixir-Devices/official_devices/tree/A14/changelogs/{device}/{filename}.txt]] [[XDA | {xda_thread}]] [[Download | https://projectelixiros.com/device/{device}]]bot_token: "112312312:jhasKJDHAKJHajkdhjkahsd"gh_token: "sdfgasdfasdfsadfsadfasdfasdf "rom_name: "DroidX-UI"channel_username: "DroidXUI_announcements"support_group_username: "DroidXUI_chats"website_url: "https://zirgomhaidar.github.io/DxWeb"official_devices_repo: "DroidX-UI-Devices/vendor_droidxOTA"device_json_paths:
- "builds/gapps"
- "builds/vanilla"show_device_info_of_all_paths: truedevice_json_structure: {"response": [{"maintainer": "","oem": "","device": "","version": "","filename": "","download": "","timestamp": ,"md5": "","sha256": "","size": ,"buildtype": "","forum": "","telegram": ""}]}message_template: | *DroidX-UI {version} for {oem} {device}* *(*`{bot_codename}`*)* *Maintainer:* [{maintainer}](https://t.me/{maintainer}) *Latest Build:* `{filename}` *MD5:* `{md5}` [[Changelog | https://github.com/DroidX-UI-Devices/vendor_droidxOTA/tree/14/changelogs/{filename}.txt]] [[Download | {download}]]python3 -m RomBotAn example of how this bot works can be seen in Project-Elixir Support, or you can directly check by messaging the bot at Elixie.
For any issues regarding the bot, you can approach for help via the following options:
- Group: You can reach out NoobStuffs
- Direct: You can contact me directly Here