Skip to main content

No project description provided

Project description

nerimity.py

Python API wrapper for Nerimity originating from Fiiral, maintained by Deutscher775

Nerimity Server

For questions, help or anything else feel free to join the nerimity.py Nerimity server.

Quick jumps

Current features

Command Handling:

  • Define and register commands using the @client.command decorator.
  • Execute commands with parameters. Register event listeners using the @client.listen decorator. Handle various events such as:
  • on_ready
  • on_message_create
  • on_message_updated
  • on_message_deleted
  • on_button_clicked
  • on_presence_change
  • on_reaction_add
  • on_member_updated
  • on_role_updated
  • on_role_deleted
  • on_role_created
  • on_channel_updated
  • on_channel_deleted
  • on_channel_created
  • on_server_updated
  • on_member_join
  • on_member_left
  • on_server_joined
  • on_server_left
  • on_friend_request_sent
  • on_friend_request_pending
  • on_friend_request_accepted
  • on_friend_removed
  • on_minute_pulse
  • on_hour_pulse

Message Handling:

  • Send messages to channels.
    • add attachments
    • add buttons with custom callback
  • Edit and delete messages.
  • React and unreact to messages.

Attachment Handling:

  • Create and upload attachments.
  • Deserialize attachments from JSON.

Channel Management:

  • Update channel information.
  • Send messages to channels.
  • Get messages from channels.
  • Purge messages from channels.
  • Deserialize channels from JSON.

Context Handling:

  • Send messages, remove messages, and react to messages within a command context.

Invite Management:

  • Create and delete server invites.
  • Deserialize invites from JSON.

Member Management:

  • Follow, unfollow, add friend, remove friend, and send direct messages to members.
  • Kick, ban, and unban server members.
  • Deserialize members and server members from JSON.

Post Management:

  • Create, delete, comment on, like, and unlike posts.
  • Get comments on posts.
  • Deserialize posts from JSON.

Role Management:

  • Create, update, and delete roles.
  • Deserialize roles from JSON.

Server Management:

  • Get server details and ban list.
  • Create, update, and delete channels and roles.
  • Create and delete invites.
  • Update server members.
  • Deserialize servers from JSON.

Status Management:

  • Change the presence status of the bot.

Button Interaction:

  • Handle button interactions and send popups.
  • Deserialize button interactions from JSON.

Permissions:

  • Manage user and role permissions.
  • Check for specific permissions before executing commands.
  • Deserialize permissions from JSON.

Installation

Option 1: Install via PyPI (recommended)

pip install nerimity

Option 2: clone this repository

  1. Clone the repository
git clone https://github.com/deutscher775/nerimity.py.git
  1. Copy the nerimity folder and insert it into your workspace. It should look like this: Image

Done!

Example commands bot

import nerimity


client = nerimity.Client(
    token="YOUR_BOT_TOKEN",
    prefix='!',
)

@client.command(name="ping")
async def ping(ctx: nerimity.Context, params: str):
    await ctx.send("Pong!")


@client.listen("on_ready")
async def on_ready(params):
    print(f"Logged in as {client.account.username}")


client.run()

Issues

If you encounter any issues while using the framework feel free to open an Issue.

Use case examples

Sending an attachment

@client.command(name="testattachment")
async def testattachment(ctx: nerimity.Context, params):
    file = await nerimity.Attachment.construct("test.png").upload()
    result = await ctx.send("Test", attachment=file)

Sending buttons with messages

@client.command(name="testbutton")
async def testbutton(ctx: nerimity.Context, params):
    popup_button = nerimity.Button.construct(label="Popup!", id="popuptestbutton", alert=True)
    async def popup_callback(buttoninteraction: nerimity.ButtonInteraction):
        user = client.get_user(buttoninteraction.userId)
        buttoninteraction.send_popup("Test", f"Hello, {user.username}!")
    await popup_button.set_callback(popup_callback)

    message_button = nerimity.Button.construct(label="Message!", id="messagetestbutton")
    async def message_callback(buttoninteraction: nerimity.ButtonInteraction):
        user = client.get_user(buttoninteraction.userId)
        await ctx.send(f"Hello, {user.username}!")
    await message_button.set_callback(message_callback)
    await ctx.send("Test", buttons=[message_button, popup_button])

Creating a post

@client.command(name="createpost")
async def createpost(ctx: nerimity.Context, params):
    content = ""
    for param in params:
        content += param + " "
    await ctx.send("Creating post with text: " + content)
    post = nerimity.Post.create_post(content)
    print(post)
    await ctx.send("Post created.")

Commenting on a post

@client.command(name="comment")
async def comment(ctx: nerimity.Context, params):
    post_id = int(params[0])
    content = ""
    for param in params[1:]:
        content += param + " "
    post = nerimity.Post.get_post(post_id)
    post.create_comment(content)
    await ctx.send("Commented on post.")

Deleting a post

@client.command(name="deletepost")
async def deletepost(ctx: nerimity.Context, params):
    post_id = int(params[0])
    post = nerimity.Post.get_post(post_id)
    post.delete_post()
    await ctx.send("Deleted post.")

Creating a channel

@client.command(name="createchannel")
async def createchannel(ctx: nerimity.Context, params):
    title = params[0]
    permissions = nerimity.Permissions.ChannelPermissions.construct(public=True, send_messages=True, join_voice=True)
    print(permissions)
    everyone_role = ctx.server.get_role(ctx.server.default_role_id)
    new_channel = ctx.server.create_channel(title, type=nerimity.ChannelTypes.SERVER_TEXT)
    await new_channel.set_permissions(permission_integer=permissions, role=everyone_role)
    await ctx.send(f"Channel '{title}' created.")

Creating a role

@client.command(name="createrole")
async def createrole(ctx: nerimity.Context, params):
    name = params[0]
    hide_role = bool(params[1])
    role = ctx.server.create_role()
    role.update_role(name=name, hide_role=hide_role)
    permissions = nerimity.Permissions.RolePermissions.construct(admin=True, manage_roles=True, send_messages=True)
    print(permissions)
    await role.set_permissions(permissions)
    await ctx.send(f"Role '{name}' created.")

Setting for a role in a channel

@client.command(name="setpermissions")
async def setpermissions(ctx: nerimity.Context, params):
    channel_id = int(params[0])
    role_id = int(params[1])
    send_messages = bool(params[2])
    join_voice = bool(params[3])
    
    channel = ctx.server.get_channel(channel_id)
    role = ctx.server.get_role(role_id)
    
    permissions = nerimity.Permissions.ChannelPermissions.construct(send_messages=send_messages, join_voice=join_voice)
    await channel.set_permissions(permission_integer=permissions, role=role)
    
    await ctx.send(f"Permissions set for role '{role.name}' in channel '{channel.name}'.")

Issues

If you encounter any issues while using the framework feel free to open an Issue.

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

nerimity-1.3.1.tar.gz (23.9 kB view details)

Uploaded Source

Built Distribution

nerimity-1.3.1-py3-none-any.whl (28.2 kB view details)

Uploaded Python 3

File details

Details for the file nerimity-1.3.1.tar.gz.

File metadata

  • Download URL: nerimity-1.3.1.tar.gz
  • Upload date:
  • Size: 23.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.3

File hashes

Hashes for nerimity-1.3.1.tar.gz
Algorithm Hash digest
SHA256 61a60b408ded23489b1fe6d27e95884382aec9c8938a622d885892e1c9a8138b
MD5 381f0efdb96c6f5bbb4f496a23528294
BLAKE2b-256 a9498baedef8c0d58f1769b933168f144db148a5297fd16af28a4337b6b7f369

See more details on using hashes here.

File details

Details for the file nerimity-1.3.1-py3-none-any.whl.

File metadata

  • Download URL: nerimity-1.3.1-py3-none-any.whl
  • Upload date:
  • Size: 28.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.3

File hashes

Hashes for nerimity-1.3.1-py3-none-any.whl
Algorithm Hash digest
SHA256 8f7fc0f283df1a26e5e89161e6d2f4deb14dd55ad147f3203f69882fae11e8bd
MD5 8592cc8ac8eabc06c2d37c9f39111362
BLAKE2b-256 50248de91873cbb8e66267d31d366206c1ca7eb810ef2cf240bba6a9a7eb47b9

See more details on using hashes here.

Supported by

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