pymino
A Python wrapper to communicate with the Amino Apps API.
Easily create a bot for Amino Apps using a modern, easy-to-use library.
⚠️ WARNING ⚠️
This software is provided for educational purposes only.
Pymino is a fully reverse-engineered client. By using this client, you may be violating the Amino Apps' Terms of Service. This could lead to your account being suspended or permanently banned. Please use Pymino responsibly and at your own risk.
Understand that the developers and maintainers of Pymino are not responsible for any actions taken against your account as a result of using this client. Proceed with caution.
If you have any questions or need help, feel free to join the Discord server.
Installation
Recommended installation method is through pip:
pip install pymino
Alternatively, you can clone the repository and install it manually:
git clone https://github.com/forevercynical/pymino.git
cd pymino
python setup.py install
For more detailed documentation and usage examples, check out the project's official documentation.
Client Class Usage
>>> from pymino import Client
>>>
>>> client = Client()
>>>
>>> client.login("email", "password") or client.login("sid")
>>> print(f"Logged in as {client.profile.username}")
>>>
>>> client.fetch_community_id(community_link="https://aminoapps.com/c/OnePiece")
>>>
>>> client.set_community_id(community_id=123)
>>>
>>> client.community.send_message(
... chatId=000000-0000-0000-000000,
... content="Hello world!"
... )
>>>
>>>
>>> client.community.send_message(
... chatId=000000-0000-0000-000000,
... content="Hello world!",
... comId=123
... )
Bot Class Usage
>>> from pymino import Bot
>>> from pymino.ext import *
>>>
>>> bot = Bot(
... command_prefix="!",
... community_id=00000000,
... console_enabled=True,
... device_id=None,
... intents=True,
... online_status=True,
... proxy="http://127.0.0.1:8080"
... )
>>>
>>> @bot.on_ready()
... def ready():
... print(f"{bot.profile.username} has logged in!")
>>>
>>> @bot.on_text_message()
... def message(ctx: Context, member: Member, message: str):
... print(f"{member.username}: {message}")
... if message.startswith("hi"):
... ctx.reply("Hello!")
>>>
>>> @bot.on_member_join()
... def join(ctx: Context, member: Member):
... ctx.reply(f"Welcome to the chat, {member.username}!")
>>>
>>> @bot.on_member_leave()
... def leave(ctx: Context):
... ctx.reply(f"Goodbye!")
>>>
>>> @bot.command(
... name="ping",
... description="This will reply with Pong!",
... aliases=["p"],
... cooldown=0
... )
... def ping(ctx: Context):
... ctx.reply("Pong!")
>>> @bot.command("say")
... def say(ctx: Context, message: str):
... ctx.reply(message)
>>> @bot.task(interval=10)
... def task():
... print("This is a task! It will run every 10 seconds!")
>>> @bot.task(interval=30)
... def task(community: Community):
... [...]
... community.send_message(chatId, "Hello world!")
... print("This is a community task! It will run every 30 seconds.")
>>> @bot.on_error()
... def error(error: Exception):
... print(f"An error has occurred: {error}")
>>> bot.run("email", "password") or bot.run("sid")