<h1 align="center">🚀 Teloxi: Based on Telethon, with additional features and easier usage</h1>
<p align="center">
<a href="https://pypi.org/project/teloxi/"><img src="https://img.shields.io/pypi/v/teloxi?style=plastic" alt="PyPI - Version"></a>
<a href="https://github.com/abbas-bachari/teloxi"><img src="https://img.shields.io/badge/Python%20-3.8+-green?style=plastic&logo=Python" alt="Python"></a>
<a href="https://pypi.org/project/teloxi/"><img src="https://img.shields.io/pypi/l/teloxi?style=plastic" alt="License"></a>
<a href="https://pepy.tech/project/teloxi"><img src="https://pepy.tech/badge/teloxi?style=flat-plastic" alt="Downloads"></a>
</p>
## 🛠️ Version: 1.0.1
## 🌟 **Introduction**
### **Teloxi** is a lightweight, easy-to-use library based on Telethon, with additional features and easier usage.
## ✨ Features
**Teloxi** is a user-friendly Python library built on top of Telethon, offering enhanced Telegram automation capabilities. Key features include:
- 🖥️ **Multi-session management**: Easily store, retrieve, update, and delete multiple Telegram accounts.
- 🔑 **Login code handling**: Automatically fetch Telegram login codes via BotFather interaction.
- 🗄️ **Database integration**: Store sessions in SQLite or other supported storage backends.
- 📊 **Query filtering & sorting**: Retrieve sessions using advanced filtering, ordering, and limit options.
- ⚡ **Asynchronous support**: Fully async functions for high-performance Telegram operations.
- 📱 **Multi-platform Device support**: Compatible with Telegram Device for **Android, Windows, Linux, macOS, and iOS**.
- 🛠️ **Extensible & open-source**: Easy to customize and contribute additional features.
> Designed to simplify Telegram automation and make multi-account management effortless.
---
## 📚 **Requirements**
* **[Python 3.10+](https://python.org)**
* **[telethon 1.41.2+](https://pypi.org/project/telethon)**
* **[dbflux 1.0.2+](https://pypi.org/project/dbflux)**
---
## 🔧 **Installation**
Install **teloxi** via **pip**:
```bash
pip install teloxi
```
Or install from source:
```bash
git clone https://github.com/abbas-bachari/teloxi.git
cd teloxi
pip install .
```
---
## 💡 **Quick Start**
```python
import asyncio
from dbflux import Sqlite
from proxa import ProxyManager
from teloxi import TeloxiClient,Device,Storage
proxa=ProxyManager(['http://127.0.0.1:10808','socks5://127.0.0.1:1080'])
DB=Storage(Sqlite('sessions.ses'))
proxy=proxa.get_working_proxy()
async def main():
session_id='+19223338123'
client=TeloxiClient(
session_id=session_id,
database=DB,
device=Device.TelegramAndroid.Generate(),
proxy=proxy.for_telethon
)
await client.connect()
is_auth=await client.is_user_authorized()
if not is_auth:
await client.start(phone=p)
await client.PrintSessions()
me=await client.get_full_me()
print(f"Phone : {me.phone}")
print(f"User ID : {me.id}")
print(f"Username : {me.username or ''}")
print(f"Full Name: {me.first_name} {me.last_name or ''}")
print(f"About : {me.about}")
chat_info,error,is_joined= await client.join_chat('https://t.me/+2Rllq4qAlvk4MjM0')
if is_joined:
print(f"Success join to {chat_info.__class__.__name__}: {chat_info.title } ")
else:
print(f"{ error.__class__.__name__}: {error}")
await client.disconnect()
if __name__=="__main__":
asyncio.run(main())
```
### 💻 Output:
```shel
|---------+---------------------+----------+------------+--------+--------------------------+--------------|
| | Device | Platform | System | API_ID | App name | Official App |
|---------+---------------------+----------+------------+--------+--------------------------+--------------|
| Current | Samsung Galaxy S25 | Android | 13 (33) | 6 | Telegram Android 11.14.1 | ✔ |
|---------+---------------------+----------+------------+--------+--------------------------+--------------|
| 1 | Redmi Redmi Note 9S | Android | 12 (31) | 6 | Telegram Android 11.14.1 | ✔ |
| 2 | Samsung Galaxy S3 | Android | 8.0 O (26) | 6 | Telegram Android 11.13.2 | ✔ |
|---------+---------------------+----------+------------+--------+--------------------------+--------------|
Phone : +19223338123
User ID : 46567598
Username : usernam_2
Full Name: user-2 telegram
About : None
Success join to Channel: Test Channel
```
---
## 🗄️ Connect to Saved Sessions
```python
import asyncio
from dbflux import Sqlite
from proxa import ProxyManager
from teloxi import TeloxiClient,Device,Storage,Account
proxa=ProxyManager(['http://127.0.0.1:10808','socks5://127.0.0.1:1080'])
DB=Storage(Sqlite('sessions.ses'))
async def main():
proxy=proxa.get_working_proxy()
accounts: list[Account]=DB.get(limit=5,conditions=[Account.status=='ACTIVE'])
for account in accounts:
client=TeloxiClient(session_id=account.session_id,database=DB,proxy=proxy.for_telethon)
await client.connect()
me=await client.get_me()
if me:
print(f"Phone : {me.phone}")
print(f"User ID : {me.id}")
print(f"Username : {me.username or ''}")
print(f"Full Name: {me.first_name} {me.last_name or ''}")
print("="*30)
await client.disconnect()
await asyncio.sleep(5)
if __name__=="__main__":
asyncio.run(main())
```
### 💻 Output:
```shell
Phone : 9812356488
User ID : 46567598
Username : username_1
Full Name: user-1
==============================
Phone : +19223338123
User ID : 5865442887
Username : usernam_2
Full Name: user-2 telegram
==============================
Phone : 1923155554
User ID : 8320041566
Username : usernam_2
Full Name: user-3
==============================
```
---
### 🔑 Get Login Code
```python
async def code_callback(message, code):
if code:
print(f"Received login code: {code}")
else:
print(message)
async def main():
proxy = proxa.get_working_proxy()
session_id = '+1987654321'
client = TeloxiClient(
session_id=session_id,
database=DB,
proxy=proxy.for_telethon
)
await client.connect()
is_auth = await client.is_user_authorized()
if is_auth:
code = await client.get_login_code(callback=code_callback)
if code:
print(f"Login code successfully retrieved: {code}")
else:
print("Failed to get login code.")
if __name__ == "__main__":
asyncio.run(main())
```
### 💻 Example Output
```shell
Login to +1987654321 now to grab your code!
Received login code: 86305
Login code successfully retrieved: 86305
```
---
## 🗄️ Manage Saved Sessions
```python
# Initialize sessions manager
DB = Storage(base_db=Sqlite('sessions.ses'))
session_id = '+1987654321'
# ------------------------------
# Get a single session by session_id
accounts: list[Account] = DB.get(conditions=[Account.session_id == session_id])
if accounts:
account = accounts[0]
print(f"Name: {account.first_name:<15} | Is bot: {'YES' if account.is_bot else 'NO':<3} | status: {account.status}")
# ------------------------------
# Get all sessions
accounts: list[Account] = DB.get()
for account in accounts:
print(f"Name: {account.first_name:<15} | Is bot: {'YES' if account.is_bot else 'NO':<3} | status: {account.status}")
# ------------------------------
# Get active sessions
active_sessions: list[Account] = DB.get(conditions=[Account.status == "ACTIVE"])
# Get inactive sessions
inactive_sessions: list[Account] = DB.get(conditions=[Account.status == "INACTIVE"])
# Get bot sessions
bot_sessions: list[Account] = DB.get(conditions=[Account.is_bot == True])
# ------------------------------
# Get first 5 active non-bot sessions
first_5_sessions: list[Account] = DB.get(limit=5, conditions=[Account.status == "ACTIVE", Account.is_bot == False])
# ------------------------------
# Get random sessions (example: 3 active non-bot)
random_sessions: list[Account] = DB.get(limit=3, conditions=[Account.status=="ACTIVE", Account.is_bot==False], random=True)
# ------------------------------
# Delete all bot sessions
deleted_bots = DB.delete(conditions=[Account.is_bot == True])
print(f'Deleted {deleted_bots} bot sessions!')
# Delete all sessions
deleted_all = DB.delete(conditions='ALL')
print(f'Deleted {deleted_all} sessions!')
# Delete inactive sessions
deleted_inactive = DB.delete(conditions=[Account.status == "INACTIVE"])
print(f'Deleted {deleted_inactive} inactive sessions!')
# ------------------------------
# Update bot sessions to inactive
updated_bots = DB.update(conditions=[Account.is_bot == True], data={'status':'INACTIVE'})
print(f'Updated {updated_bots} bot sessions!')
# Update a specific session by phone
updated_one = DB.update(conditions=[Account.phone == '+9811111'], data={'status':'INACTIVE'})
print(f'Updated {updated_one} session!')
```
---
### 💻 Example Output
```shell
Name: user-1 | Is bot: NO | status: ACTIVE
Name: user-2 | Is bot: YES | status: INACTIVE
Name: user-3 | Is bot: NO | status: ACTIVE
...
Deleted 2 bot sessions!
Deleted 10 sessions!
Updated 3 bot sessions!
Updated 1 session!
```
---
## 👤 About the Author
**Abbas Bachari / عباس بچاری** – Developer & Maintainer of **Teloxi**
- 📧 Telegram: [@abbas_bachari](https://t.me/abbas_bachari)
- 🌐 GitHub: [github.com/abbas-bachari](https://github.com/abbas-bachari)
Raw data
{
"_id": null,
"home_page": null,
"name": "teloxi",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.10",
"maintainer_email": null,
"keywords": "telethon, telegram, telegram multi session, telegram-python, opentele, openetele, teloxi, dbflux, api, abbas bachari, \u0639\u0628\u0627\u0633 \u0628\u0686\u0627\u0631\u06cc",
"author": null,
"author_email": "Abbas Bachari <abbas-bachari@hotmail.com>",
"download_url": "https://files.pythonhosted.org/packages/48/e0/6ce458fe94f6b3981cd352c97f45e94e6b624891d0e5738c4b300a8188f5/teloxi-1.0.1.tar.gz",
"platform": null,
"description": "<h1 align=\"center\">\ud83d\ude80 Teloxi: Based on Telethon, with additional features and easier usage</h1>\r\n\r\n<p align=\"center\">\r\n<a href=\"https://pypi.org/project/teloxi/\"><img src=\"https://img.shields.io/pypi/v/teloxi?style=plastic\" alt=\"PyPI - Version\"></a>\r\n<a href=\"https://github.com/abbas-bachari/teloxi\"><img src=\"https://img.shields.io/badge/Python%20-3.8+-green?style=plastic&logo=Python\" alt=\"Python\"></a>\r\n <a href=\"https://pypi.org/project/teloxi/\"><img src=\"https://img.shields.io/pypi/l/teloxi?style=plastic\" alt=\"License\"></a>\r\n <a href=\"https://pepy.tech/project/teloxi\"><img src=\"https://pepy.tech/badge/teloxi?style=flat-plastic\" alt=\"Downloads\"></a>\r\n</p>\r\n\r\n## \ud83d\udee0\ufe0f Version: 1.0.1\r\n\r\n## \ud83c\udf1f **Introduction**\r\n\r\n### **Teloxi** is a lightweight, easy-to-use library based on Telethon, with additional features and easier usage. \r\n\r\n## \u2728 Features\r\n\r\n**Teloxi** is a user-friendly Python library built on top of Telethon, offering enhanced Telegram automation capabilities. Key features include:\r\n\r\n- \ud83d\udda5\ufe0f **Multi-session management**: Easily store, retrieve, update, and delete multiple Telegram accounts. \r\n- \ud83d\udd11 **Login code handling**: Automatically fetch Telegram login codes via BotFather interaction. \r\n- \ud83d\uddc4\ufe0f **Database integration**: Store sessions in SQLite or other supported storage backends. \r\n- \ud83d\udcca **Query filtering & sorting**: Retrieve sessions using advanced filtering, ordering, and limit options. \r\n- \u26a1 **Asynchronous support**: Fully async functions for high-performance Telegram operations. \r\n- \ud83d\udcf1 **Multi-platform Device support**: Compatible with Telegram Device for **Android, Windows, Linux, macOS, and iOS**. \r\n- \ud83d\udee0\ufe0f **Extensible & open-source**: Easy to customize and contribute additional features. \r\n\r\n> Designed to simplify Telegram automation and make multi-account management effortless.\r\n\r\n\r\n---\r\n\r\n## \ud83d\udcda **Requirements**\r\n\r\n* **[Python 3.10+](https://python.org)**\r\n* **[telethon 1.41.2+](https://pypi.org/project/telethon)**\r\n* **[dbflux 1.0.2+](https://pypi.org/project/dbflux)**\r\n\r\n---\r\n\r\n## \ud83d\udd27 **Installation**\r\n\r\nInstall **teloxi** via **pip**:\r\n\r\n```bash\r\npip install teloxi\r\n```\r\n\r\nOr install from source:\r\n\r\n```bash\r\ngit clone https://github.com/abbas-bachari/teloxi.git\r\ncd teloxi\r\npip install .\r\n\r\n```\r\n\r\n---\r\n\r\n## \ud83d\udca1 **Quick Start**\r\n\r\n```python\r\nimport asyncio\r\nfrom dbflux import Sqlite\r\nfrom proxa import ProxyManager\r\nfrom teloxi import TeloxiClient,Device,Storage\r\n\r\n\r\nproxa=ProxyManager(['http://127.0.0.1:10808','socks5://127.0.0.1:1080'])\r\nDB=Storage(Sqlite('sessions.ses'))\r\n\r\n\r\nproxy=proxa.get_working_proxy()\r\n\r\nasync def main():\r\n session_id='+19223338123'\r\n\r\n \r\n client=TeloxiClient(\r\n session_id=session_id, \r\n database=DB,\r\n device=Device.TelegramAndroid.Generate(),\r\n proxy=proxy.for_telethon\r\n )\r\n \r\n\r\n await client.connect()\r\n \r\n is_auth=await client.is_user_authorized()\r\n if not is_auth:\r\n await client.start(phone=p)\r\n \r\n \r\n await client.PrintSessions()\r\n \r\n\r\n me=await client.get_full_me()\r\n\r\n print(f\"Phone : {me.phone}\")\r\n print(f\"User ID : {me.id}\")\r\n print(f\"Username : {me.username or ''}\")\r\n print(f\"Full Name: {me.first_name} {me.last_name or ''}\")\r\n print(f\"About : {me.about}\")\r\n \r\n \r\n\r\n chat_info,error,is_joined= await client.join_chat('https://t.me/+2Rllq4qAlvk4MjM0')\r\n if is_joined:\r\n \r\n print(f\"Success join to {chat_info.__class__.__name__}: {chat_info.title } \")\r\n else:\r\n print(f\"{ error.__class__.__name__}: {error}\")\r\n \r\n \r\n await client.disconnect()\r\n\r\n \r\nif __name__==\"__main__\":\r\n asyncio.run(main())\r\n\r\n```\r\n\r\n### \ud83d\udcbb Output:\r\n\r\n```shel\r\n|---------+---------------------+----------+------------+--------+--------------------------+--------------|\r\n| | Device | Platform | System | API_ID | App name | Official App |\r\n|---------+---------------------+----------+------------+--------+--------------------------+--------------|\r\n| Current | Samsung Galaxy S25 | Android | 13 (33) | 6 | Telegram Android 11.14.1 | \u2714 |\r\n|---------+---------------------+----------+------------+--------+--------------------------+--------------|\r\n| 1 | Redmi Redmi Note 9S | Android | 12 (31) | 6 | Telegram Android 11.14.1 | \u2714 |\r\n| 2 | Samsung Galaxy S3 | Android | 8.0 O (26) | 6 | Telegram Android 11.13.2 | \u2714 |\r\n|---------+---------------------+----------+------------+--------+--------------------------+--------------|\r\nPhone : +19223338123\r\nUser ID : 46567598\r\nUsername : usernam_2\r\nFull Name: user-2 telegram\r\nAbout : None\r\nSuccess join to Channel: Test Channel \r\n```\r\n\r\n---\r\n\r\n## \ud83d\uddc4\ufe0f Connect to Saved Sessions\r\n\r\n```python\r\nimport asyncio\r\nfrom dbflux import Sqlite\r\nfrom proxa import ProxyManager\r\nfrom teloxi import TeloxiClient,Device,Storage,Account\r\n\r\n\r\nproxa=ProxyManager(['http://127.0.0.1:10808','socks5://127.0.0.1:1080'])\r\nDB=Storage(Sqlite('sessions.ses'))\r\n\r\nasync def main():\r\n proxy=proxa.get_working_proxy()\r\n accounts: list[Account]=DB.get(limit=5,conditions=[Account.status=='ACTIVE'])\r\n for account in accounts:\r\n \r\n client=TeloxiClient(session_id=account.session_id,database=DB,proxy=proxy.for_telethon) \r\n await client.connect()\r\n \r\n \r\n \r\n me=await client.get_me()\r\n \r\n if me:\r\n print(f\"Phone : {me.phone}\")\r\n print(f\"User ID : {me.id}\")\r\n print(f\"Username : {me.username or ''}\")\r\n print(f\"Full Name: {me.first_name} {me.last_name or ''}\")\r\n print(\"=\"*30)\r\n \r\n\r\n await client.disconnect()\r\n await asyncio.sleep(5)\r\n\r\nif __name__==\"__main__\":\r\n asyncio.run(main())\r\n\r\n```\r\n\r\n### \ud83d\udcbb Output:\r\n\r\n```shell\r\nPhone : 9812356488\r\nUser ID : 46567598\r\nUsername : username_1\r\nFull Name: user-1\r\n==============================\r\nPhone : +19223338123\r\nUser ID : 5865442887\r\nUsername : usernam_2\r\nFull Name: user-2 telegram\r\n==============================\r\nPhone : 1923155554\r\nUser ID : 8320041566\r\nUsername : usernam_2\r\nFull Name: user-3\r\n==============================\r\n```\r\n\r\n---\r\n\r\n### \ud83d\udd11 Get Login Code\r\n\r\n```python\r\nasync def code_callback(message, code):\r\n if code:\r\n print(f\"Received login code: {code}\")\r\n else:\r\n print(message)\r\n\r\n\r\nasync def main():\r\n proxy = proxa.get_working_proxy()\r\n session_id = '+1987654321'\r\n\r\n client = TeloxiClient(\r\n session_id=session_id, \r\n database=DB,\r\n proxy=proxy.for_telethon\r\n )\r\n\r\n await client.connect()\r\n \r\n is_auth = await client.is_user_authorized()\r\n if is_auth:\r\n code = await client.get_login_code(callback=code_callback)\r\n if code:\r\n print(f\"Login code successfully retrieved: {code}\")\r\n else:\r\n print(\"Failed to get login code.\")\r\n\r\n\r\nif __name__ == \"__main__\":\r\n asyncio.run(main())\r\n\r\n```\r\n\r\n### \ud83d\udcbb Example Output\r\n\r\n```shell\r\nLogin to +1987654321 now to grab your code!\r\nReceived login code: 86305\r\nLogin code successfully retrieved: 86305\r\n\r\n```\r\n\r\n---\r\n\r\n## \ud83d\uddc4\ufe0f Manage Saved Sessions\r\n\r\n```python\r\n# Initialize sessions manager\r\nDB = Storage(base_db=Sqlite('sessions.ses'))\r\nsession_id = '+1987654321'\r\n\r\n# ------------------------------\r\n# Get a single session by session_id\r\naccounts: list[Account] = DB.get(conditions=[Account.session_id == session_id])\r\nif accounts:\r\n account = accounts[0]\r\n print(f\"Name: {account.first_name:<15} | Is bot: {'YES' if account.is_bot else 'NO':<3} | status: {account.status}\")\r\n\r\n# ------------------------------\r\n# Get all sessions\r\naccounts: list[Account] = DB.get()\r\nfor account in accounts:\r\n print(f\"Name: {account.first_name:<15} | Is bot: {'YES' if account.is_bot else 'NO':<3} | status: {account.status}\")\r\n\r\n# ------------------------------\r\n# Get active sessions\r\nactive_sessions: list[Account] = DB.get(conditions=[Account.status == \"ACTIVE\"])\r\n\r\n# Get inactive sessions\r\ninactive_sessions: list[Account] = DB.get(conditions=[Account.status == \"INACTIVE\"])\r\n\r\n# Get bot sessions\r\nbot_sessions: list[Account] = DB.get(conditions=[Account.is_bot == True])\r\n\r\n# ------------------------------\r\n# Get first 5 active non-bot sessions\r\nfirst_5_sessions: list[Account] = DB.get(limit=5, conditions=[Account.status == \"ACTIVE\", Account.is_bot == False])\r\n\r\n# ------------------------------\r\n# Get random sessions (example: 3 active non-bot)\r\nrandom_sessions: list[Account] = DB.get(limit=3, conditions=[Account.status==\"ACTIVE\", Account.is_bot==False], random=True)\r\n\r\n# ------------------------------\r\n# Delete all bot sessions\r\ndeleted_bots = DB.delete(conditions=[Account.is_bot == True])\r\nprint(f'Deleted {deleted_bots} bot sessions!')\r\n\r\n# Delete all sessions\r\ndeleted_all = DB.delete(conditions='ALL')\r\nprint(f'Deleted {deleted_all} sessions!')\r\n\r\n# Delete inactive sessions\r\ndeleted_inactive = DB.delete(conditions=[Account.status == \"INACTIVE\"])\r\nprint(f'Deleted {deleted_inactive} inactive sessions!')\r\n\r\n# ------------------------------\r\n# Update bot sessions to inactive\r\nupdated_bots = DB.update(conditions=[Account.is_bot == True], data={'status':'INACTIVE'})\r\nprint(f'Updated {updated_bots} bot sessions!')\r\n\r\n# Update a specific session by phone\r\nupdated_one = DB.update(conditions=[Account.phone == '+9811111'], data={'status':'INACTIVE'})\r\nprint(f'Updated {updated_one} session!')\r\n```\r\n\r\n---\r\n\r\n### \ud83d\udcbb Example Output\r\n\r\n```shell\r\nName: user-1 | Is bot: NO | status: ACTIVE\r\nName: user-2 | Is bot: YES | status: INACTIVE\r\nName: user-3 | Is bot: NO | status: ACTIVE\r\n...\r\nDeleted 2 bot sessions!\r\nDeleted 10 sessions!\r\nUpdated 3 bot sessions!\r\nUpdated 1 session!\r\n```\r\n\r\n---\r\n\r\n## \ud83d\udc64 About the Author\r\n\r\n**Abbas Bachari / \u0639\u0628\u0627\u0633 \u0628\u0686\u0627\u0631\u06cc** \u2013 Developer & Maintainer of **Teloxi**\r\n\r\n- \ud83d\udce7 Telegram: [@abbas_bachari](https://t.me/abbas_bachari) \r\n- \ud83c\udf10 GitHub: [github.com/abbas-bachari](https://github.com/abbas-bachari)\r\n",
"bugtrack_url": null,
"license": null,
"summary": "A user-friendly library based on Telethon, with additional features and easier usage.",
"version": "1.0.1",
"project_urls": {
"Documentation": "https://github.com/abbas-bachari/teloxi",
"Homepage": "https://github.com/abbas-bachari/teloxi",
"Source": "https://github.com/abbas-bachari/teloxi/",
"Tracker": "https://github.com/abbas-bachari/teloxi/issues"
},
"split_keywords": [
"telethon",
" telegram",
" telegram multi session",
" telegram-python",
" opentele",
" openetele",
" teloxi",
" dbflux",
" api",
" abbas bachari",
" \u0639\u0628\u0627\u0633 \u0628\u0686\u0627\u0631\u06cc"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "55dce8d390fb35fe8cec62bcba1ff328a7d835c8c79f971937ee77eba5754e36",
"md5": "dc8fa2841fef4e5a8a4a9969e60025a3",
"sha256": "989145420d8d9bf854d1965c8818bf56c49846709c9f86a2dbaf29935844e598"
},
"downloads": -1,
"filename": "teloxi-1.0.1-py3-none-any.whl",
"has_sig": false,
"md5_digest": "dc8fa2841fef4e5a8a4a9969e60025a3",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.10",
"size": 65516,
"upload_time": "2025-09-07T11:54:40",
"upload_time_iso_8601": "2025-09-07T11:54:40.096416Z",
"url": "https://files.pythonhosted.org/packages/55/dc/e8d390fb35fe8cec62bcba1ff328a7d835c8c79f971937ee77eba5754e36/teloxi-1.0.1-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "48e06ce458fe94f6b3981cd352c97f45e94e6b624891d0e5738c4b300a8188f5",
"md5": "aa4b6b1318e1f8296ba85b1cae16bec5",
"sha256": "8cdf631cb09f382c8362d542db2a7bff452dba98f69af3bd24c688d333108f2e"
},
"downloads": -1,
"filename": "teloxi-1.0.1.tar.gz",
"has_sig": false,
"md5_digest": "aa4b6b1318e1f8296ba85b1cae16bec5",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.10",
"size": 62924,
"upload_time": "2025-09-07T11:54:42",
"upload_time_iso_8601": "2025-09-07T11:54:42.314273Z",
"url": "https://files.pythonhosted.org/packages/48/e0/6ce458fe94f6b3981cd352c97f45e94e6b624891d0e5738c4b300a8188f5/teloxi-1.0.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-09-07 11:54:42",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "abbas-bachari",
"github_project": "teloxi",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"requirements": [
{
"name": "telethon",
"specs": [
[
">=",
"1.41.0"
]
]
},
{
"name": "dbflux",
"specs": [
[
">=",
"1.0.2"
]
]
},
{
"name": "python-socks",
"specs": [
[
">=",
"2.7.1"
]
]
}
],
"lcname": "teloxi"
}