Skip to main content

Async Python client for MyDot.one social platform

Project description

aiodot logo

aiodot 🚀

Async Python client for MyDot.one social platform
Build bots, automation, and tools with ease.

PyPI version Python License: MIT


aiodot is an asynchronous Python library for MyDot.one. Built with aiohttp — fast, async-first, session-based like aiogram.


✨ Features

  • Async-first — Built on aiohttp
  • 🔑 Login with password — No token needed
  • 💾 Session persistence — Login once, auto-loads next time
  • 🔄 Auto token refresh — Handles 401 gracefully
  • 📦 60+ endpoints — Full API coverage
  • 🖼️ Avatar upload — Built-in support
  • 💰 Wallet management — Full wallet API
  • 🧵 Thread management — Composer and thread support
  • 🎯 Type hints — Full type annotations

📦 Installation

pip install aiodot

💡 Quick Start

Login with password:

import asyncio
from aiodot import MyDotClient

async def main():
    async with MyDotClient(session_file="session.json") as client:
        await client.login("username", "password")

        me = await client.get_me()
        print(f"@{me.username}")

        dot = await client.create_dot("Hello aiodot! 🚀")
        print(dot.url)

asyncio.run(main())

Or login with token:

async with MyDotClient(token="your-token", session_file="session.json") as client:
    me = await client.get_me()

🤖 Echo Bot

import asyncio
from aiodot import MyDotClient

async def main():
    processed = set()
    async with MyDotClient(session_file="session.json") as c:
        await c.login("username", "password")
        print(f"🤖 @{(await c.get_me()).username} started!")

        while True:
            for n in (await c.get_notifications(10)).get("results", []):
                if n.get("id") in processed:
                    continue
                processed.add(n.get("id"))
                if n.get("type") == "mention":
                    d = n.get("dot", {})
                    if d.get("id"):
                        await c.reply(d["id"], "Hello! 🤖")
            await asyncio.sleep(15)

asyncio.run(main())

📖 Complete API Reference

Category Methods
Auth login(), login_with_token()
Profile get_me(), update_profile(), upload_avatar(), upload_avatar_request(), upload_avatar_put(), get_profile_visibility(), set_profile_visibility()
Dots create_dot(), get_dot(), reply(), repost(), quote(), like(), unlike(), bookmark(), unbookmark(), edit_dot(), delete_dot(), get_replies(), get_reposts(), get_quotes(), get_dot_likes(), undo_repost(), set_reply_permission()
Social follow(), unfollow(), block(), unblock(), mute(), unmute()
Users search_users(), get_user_followers(), get_user_following(), get_user_dots(), get_user_replies(), get_user_likes()
Feed home_feed(), following_feed(), explore_users_suggestions(), get_topic_dots()
Notifications get_notifications(), mark_all_read(), get_notification_preferences(), update_notification_preferences()
Trending get_trending_hashtags(), get_trending_media()
Bookmarks get_bookmarks()
Wallet client.wallet.create(), client.wallet.list(), client.wallet.get(), client.wallet.transactions(), client.wallet.toggle_default()
Threads get_threads(), create_threads(), get_threads_view(), add_thread(), remove_thread()
Composer get_composer_state(), reset_composer()
Media upload_media()
Other get_alerts(), get_invites(), get_wallets(), get_2fa_state(), get_star_settings(), get_star_transactions()

📈 What's New

v1.2.0

  • 🔑 Password loginclient.login(username, password)
  • 🖼️ Avatar upload — Full upload flow (upload_avatar, upload_avatar_request, upload_avatar_put)
  • 💰 Wallet managementclient.wallet.* (create, list, get, transactions, toggle default)
  • 🧵 Thread management — Composer and thread endpoints
  • 👤 Extended User model — 25+ fields including badges, KYC, join date, visibility
  • 📦 New modelsThread, ReplyPermission
  • 🔗 Extended profile updateselected_badge_id, avatar_key, birthdate
  • 📝 Improved auth — Cleaner code, session persistence

v1.0.0

  • ⚡ Initial release
  • 50+ endpoints (dots, feed, notifications, trending, social, search)
  • Session persistence (like aiogram)
  • Auto token refresh
  • Type hints & dataclasses

⚠️ Disclaimer

Unofficial library. Use responsibly per MyDot.one Terms of Service.


📡 Community


📄 License

MIT © karbaladev.irView License

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

aiodot-1.2.0.tar.gz (13.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

aiodot-1.2.0-py3-none-any.whl (12.3 kB view details)

Uploaded Python 3

File details

Details for the file aiodot-1.2.0.tar.gz.

File metadata

  • Download URL: aiodot-1.2.0.tar.gz
  • Upload date:
  • Size: 13.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.2

File hashes

Hashes for aiodot-1.2.0.tar.gz
Algorithm Hash digest
SHA256 32a619d1e3f501b4721fe737f6f0ec2b66fa200a46b90ee51ae398b0044bb7aa
MD5 2d695c8ad31f505d4fba98e0649f4f48
BLAKE2b-256 556cd40b98b1da0dfb3bd83a38fb32c0446227d931acd3d9ef6ebeaa318c9abd

See more details on using hashes here.

File details

Details for the file aiodot-1.2.0-py3-none-any.whl.

File metadata

  • Download URL: aiodot-1.2.0-py3-none-any.whl
  • Upload date:
  • Size: 12.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.2

File hashes

Hashes for aiodot-1.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 39bb715da0edef77b9ca4e176ce667466fb8e29185aaa27be0f7ee8533445a86
MD5 eca7a3247babb6a080ced4e18813808e
BLAKE2b-256 044d63b7440808110842a72f1a0fdea87b794b815de2dc70d19505ed48d2a29a

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page