# srai-telegrambot
A library that makes it easier to build ai powered telegram bots
# install
pip install srai-telegrambot
## get your token
get your telegrambot token from the botfather as described here https://core.telegram.org/bots/tutorial
## usage
This is how i use the bot:
I rely on mongo db to save messages there are other options!
You can also implement your own version of dao telegrambot.
I will add a in-memory database that i use for testing in the near future
```python
import os
from srai_core.store.database_mongo import DatabaseMongo
from srai_core.tools_env import get_string_from_env
from srai_telegrambot.command.command_chat_id import CommandChatId
from srai_telegrambot.command.command_help import CommandHelp
from srai_telegrambot.command.command_image_tag import CommandImageTag
from srai_telegrambot.dao_telegram_bot import DaoTelegramBot
from srai_telegrambot.mode.text_mode_gpt import TextModeGpt
from srai_telegrambot.mode.text_mode_rag import TextModeRag
from srai_telegrambot.telegram_bot import TelegramBot
if __name__ == "__main__":
telegram_token = get_string_from_env("SRAI_TELEGRAM_TOKEN")
connection_string = get_string_from_env("MONGODB_CONNECTION_STRING")
telegram_root_id = get_string_from_env(
"TELEGRAM_ROOT_ID"
) # this is my user id and it gives me admin rights in the bot
database_mongo = DatabaseMongo("database_telegrambot", connection_string)
dao_telegram_bot = DaoTelegramBot(database_mongo)
bot = TelegramBot(
token=telegram_token,
dao_telegram_bot=dao_telegram_bot,
)
bot.register_admin(telegram_root_id)
# register commands
bot.register_command(CommandHelp())
bot.register_command(CommandChatId())
bot.register_command(CommandImageTag())
bot.register_text_mode(TextModeGpt("you are a chatbot"), False)
path_dir_vectorstore = os.path.abspath(os.path.join("test", "data", "vectorstore"))
bot.register_text_mode(TextModeRag(path_dir_vectorstore), True)
# start bot
bot.main()
```
### How to build a voice interface to chatgpt
Below is code for a voice interface to chatgpt
```python
from srai_core.store.database_mongo import DatabaseMongo
from srai_core.tools_env import get_string_from_env
from srai_telegrambot.command.command_chat_id import CommandChatId
from srai_telegrambot.command.command_help import CommandHelp
from srai_telegrambot.command.command_image_tag import CommandImageTag
from srai_telegrambot.dao_telegram_bot import DaoTelegramBot
from srai_telegrambot.mode.voice_mode_gpt import VoiceModeGpt
from srai_telegrambot.telegram_bot import TelegramBot
if __name__ == "__main__":
telegram_token = get_string_from_env("SRAI_TELEGRAM_TOKEN")
connection_string = get_string_from_env("MONGODB_CONNECTION_STRING")
telegram_root_id = get_string_from_env(
"TELEGRAM_ROOT_ID"
) # this is my user id and it gives me admin rights in the bot
database_mongo = DatabaseMongo("database_telegrambot", connection_string)
dao_telegram_bot = DaoTelegramBot(database_mongo)
bot = TelegramBot(
token=telegram_token,
dao_telegram_bot=dao_telegram_bot,
)
bot.register_admin(telegram_root_id)
# register commands
bot.register_command(CommandHelp())
bot.register_command(CommandChatId())
bot.register_command(CommandImageTag())
bot.register_voice_mode(VoiceModeGpt("You are a chatbot. Never respond in more that three sentences"), True)
# start bot
bot.main()
```
### How to build a RAG telegram bot vectorstore
Below is code for a rag telegram bot
```python
import os
from srai_telegrambot.mode.text_mode_rag import TextModeRag
from srai_telegrambot.telegram_bot_test import TelegramBotTest
path_dir_vectorstore = os.path.abspath(os.path.join("test", "data", "vectorstore"))
mode = TextModeRag(path_dir_vectorstore)
mode.register(TelegramBotTest())
list_path_file = []
list_path_file.append(os.path.abspath(os.path.join("test", "data", "paper_0.pdf")))
list_path_file.append(os.path.abspath(os.path.join("test", "data", "paper_1.pdf")))
list_path_file.append(os.path.abspath(os.path.join("test", "data", "paper_2.pdf")))
for path_file in list_path_file:
mode.add_path_file_pdf(path_file)
mode.rebuild_vectorstore()
print(mode._handle_text("test_chat", "What is the most important parameter in DCE-CT in stroke?"))
print(mode._handle_text("test_chat", "Please elaborate?"))
```
## Changelog
### 0.17.0
- Added voice support
- Removed inate vectorstore FAISS
### 0.16.0
- Added RAG text mode
- Moved memory databases to core lib
Raw data
{
"_id": null,
"home_page": "https://github.com/southriverai/srai-telegrambot",
"name": "srai-telegrambot",
"maintainer": null,
"docs_url": null,
"requires_python": "<4.0,>=3.10",
"maintainer_email": null,
"keywords": "SRAI, TOOLS",
"author": "Jaap Oosterbroek",
"author_email": "jaap.oosterbroek@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/f5/f8/04ecdc6661c52e75d6cb25899358998de78c793195c0e75e336f0ca245ed/srai_telegrambot-0.17.2.tar.gz",
"platform": null,
"description": "# srai-telegrambot\nA library that makes it easier to build ai powered telegram bots\n\n# install\npip install srai-telegrambot\n\n## get your token\nget your telegrambot token from the botfather as described here https://core.telegram.org/bots/tutorial\n\n## usage\nThis is how i use the bot:\nI rely on mongo db to save messages there are other options!\nYou can also implement your own version of dao telegrambot.\nI will add a in-memory database that i use for testing in the near future\n\n```python\nimport os\nfrom srai_core.store.database_mongo import DatabaseMongo\nfrom srai_core.tools_env import get_string_from_env\n\nfrom srai_telegrambot.command.command_chat_id import CommandChatId\nfrom srai_telegrambot.command.command_help import CommandHelp\nfrom srai_telegrambot.command.command_image_tag import CommandImageTag\nfrom srai_telegrambot.dao_telegram_bot import DaoTelegramBot\nfrom srai_telegrambot.mode.text_mode_gpt import TextModeGpt\nfrom srai_telegrambot.mode.text_mode_rag import TextModeRag\nfrom srai_telegrambot.telegram_bot import TelegramBot\n\nif __name__ == \"__main__\":\n telegram_token = get_string_from_env(\"SRAI_TELEGRAM_TOKEN\")\n connection_string = get_string_from_env(\"MONGODB_CONNECTION_STRING\")\n telegram_root_id = get_string_from_env(\n \"TELEGRAM_ROOT_ID\"\n ) # this is my user id and it gives me admin rights in the bot\n\n database_mongo = DatabaseMongo(\"database_telegrambot\", connection_string)\n dao_telegram_bot = DaoTelegramBot(database_mongo)\n bot = TelegramBot(\n token=telegram_token,\n dao_telegram_bot=dao_telegram_bot,\n )\n\n bot.register_admin(telegram_root_id)\n\n # register commands\n bot.register_command(CommandHelp())\n bot.register_command(CommandChatId())\n bot.register_command(CommandImageTag())\n bot.register_text_mode(TextModeGpt(\"you are a chatbot\"), False)\n\n path_dir_vectorstore = os.path.abspath(os.path.join(\"test\", \"data\", \"vectorstore\"))\n bot.register_text_mode(TextModeRag(path_dir_vectorstore), True)\n # start bot\n bot.main()\n```\n### How to build a voice interface to chatgpt\nBelow is code for a voice interface to chatgpt\n\n```python\nfrom srai_core.store.database_mongo import DatabaseMongo\nfrom srai_core.tools_env import get_string_from_env\n\nfrom srai_telegrambot.command.command_chat_id import CommandChatId\nfrom srai_telegrambot.command.command_help import CommandHelp\nfrom srai_telegrambot.command.command_image_tag import CommandImageTag\nfrom srai_telegrambot.dao_telegram_bot import DaoTelegramBot\nfrom srai_telegrambot.mode.voice_mode_gpt import VoiceModeGpt\nfrom srai_telegrambot.telegram_bot import TelegramBot\n\nif __name__ == \"__main__\":\n telegram_token = get_string_from_env(\"SRAI_TELEGRAM_TOKEN\")\n connection_string = get_string_from_env(\"MONGODB_CONNECTION_STRING\")\n telegram_root_id = get_string_from_env(\n \"TELEGRAM_ROOT_ID\"\n ) # this is my user id and it gives me admin rights in the bot\n\n database_mongo = DatabaseMongo(\"database_telegrambot\", connection_string)\n dao_telegram_bot = DaoTelegramBot(database_mongo)\n bot = TelegramBot(\n token=telegram_token,\n dao_telegram_bot=dao_telegram_bot,\n )\n\n bot.register_admin(telegram_root_id)\n\n # register commands\n bot.register_command(CommandHelp())\n bot.register_command(CommandChatId())\n bot.register_command(CommandImageTag())\n bot.register_voice_mode(VoiceModeGpt(\"You are a chatbot. Never respond in more that three sentences\"), True)\n\n\n # start bot\n bot.main()\n```\n\n\n### How to build a RAG telegram bot vectorstore\nBelow is code for a rag telegram bot\n\n```python\nimport os\n\nfrom srai_telegrambot.mode.text_mode_rag import TextModeRag\nfrom srai_telegrambot.telegram_bot_test import TelegramBotTest\n\npath_dir_vectorstore = os.path.abspath(os.path.join(\"test\", \"data\", \"vectorstore\"))\nmode = TextModeRag(path_dir_vectorstore)\nmode.register(TelegramBotTest())\n\nlist_path_file = []\nlist_path_file.append(os.path.abspath(os.path.join(\"test\", \"data\", \"paper_0.pdf\")))\nlist_path_file.append(os.path.abspath(os.path.join(\"test\", \"data\", \"paper_1.pdf\")))\nlist_path_file.append(os.path.abspath(os.path.join(\"test\", \"data\", \"paper_2.pdf\")))\n\nfor path_file in list_path_file:\n mode.add_path_file_pdf(path_file)\nmode.rebuild_vectorstore()\nprint(mode._handle_text(\"test_chat\", \"What is the most important parameter in DCE-CT in stroke?\"))\nprint(mode._handle_text(\"test_chat\", \"Please elaborate?\"))\n```\n\n\n## Changelog\n\n### 0.17.0\n- Added voice support\n- Removed inate vectorstore FAISS\n\n### 0.16.0\n- Added RAG text mode\n- Moved memory databases to core lib\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "A library that makes it easier to build ai powered telegram bots.",
"version": "0.17.2",
"project_urls": {
"Homepage": "https://github.com/southriverai/srai-telegrambot",
"Repository": "https://github.com/southriverai/srai-telegrambot"
},
"split_keywords": [
"srai",
" tools"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "b6e52840119cbcf052fb59e2fb42216ccb725ebb3d23bcdab26f0aa1a4aeeecc",
"md5": "46bd6ca301e5e96ad4716b10271c1dd8",
"sha256": "a8f301f1f8bc12b260b7dd9c44c4ff44bd1f7130fd35549f3698c83baaaef539"
},
"downloads": -1,
"filename": "srai_telegrambot-0.17.2-py3-none-any.whl",
"has_sig": false,
"md5_digest": "46bd6ca301e5e96ad4716b10271c1dd8",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": "<4.0,>=3.10",
"size": 14373,
"upload_time": "2024-08-21T05:28:26",
"upload_time_iso_8601": "2024-08-21T05:28:26.485529Z",
"url": "https://files.pythonhosted.org/packages/b6/e5/2840119cbcf052fb59e2fb42216ccb725ebb3d23bcdab26f0aa1a4aeeecc/srai_telegrambot-0.17.2-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "f5f804ecdc6661c52e75d6cb25899358998de78c793195c0e75e336f0ca245ed",
"md5": "5c95e9387265f9834eda41540449efe9",
"sha256": "d47fd113c1756f45ca5a6c98cdcbed504b33207affba64633b08fcd9642ce336"
},
"downloads": -1,
"filename": "srai_telegrambot-0.17.2.tar.gz",
"has_sig": false,
"md5_digest": "5c95e9387265f9834eda41540449efe9",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "<4.0,>=3.10",
"size": 9652,
"upload_time": "2024-08-21T05:28:27",
"upload_time_iso_8601": "2024-08-21T05:28:27.835158Z",
"url": "https://files.pythonhosted.org/packages/f5/f8/04ecdc6661c52e75d6cb25899358998de78c793195c0e75e336f0ca245ed/srai_telegrambot-0.17.2.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-08-21 05:28:27",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "southriverai",
"github_project": "srai-telegrambot",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"lcname": "srai-telegrambot"
}