### RoWifi Custombinds: Example - Division-less Bind Source: https://rowifi.xyz/docs/custombinds Provides an example of how to create a division-less bind using RoWifi's custombind scripting. This involves checking if a user is in the main group but not in any of the specified subgroups. ```lua -- Example: Division-less/Department-less Bind -- Checks if the user is in the main group and not present in ANY of the subgroups. -- IsInGroup(Main Group) and not IsInGroup(Sub Group 1) and not IsInGroup(Sub Group 2) ... ``` -------------------------------- ### Read Roblox Datastore Entry Source: https://rowifi.xyz/docs/tower/custom-commands This workflow demonstrates how to read data from a Roblox Datastore. It starts with a Start node, retrieves a specific entry using GetDatastoreEntry (configured with Universe ID, Datastore name, and Entry key), and then sends the retrieved data using SendMessage. Nested JSON values can be accessed using dot notation. ```Workflow Start → GetDatastoreEntry (Universe ID, Datastore name, Entry key) → SendMessage (output: entry data) ``` -------------------------------- ### Get Denylist Entries Source: https://rowifi.xyz/docs/api Retrieves all denylist entries for a specific Discord guild. ```APIDOC ## GET /guilds/{guild.id}/blacklists ### Description Returns an array of denylists for the given guild. Each denylist has the following fields. ### Method GET ### Endpoint `/guilds/{guild.id}/blacklists` ### Parameters #### Path Parameters - **guild.id** (string) - Required - The ID of the Discord guild. ### Response #### Success Response (200) - **id** (string) - The internal ID for the denylist. - **reason** (string) - The reason set for the denylist. - **kind** (integer) - The type of the denylist (0 - User, 1 - Group). - **user_id** (string) - Optional - The ID of the Roblox User in the denylist. Present only when kind = 0. - **group_id** (string) - Optional - The ID of the Roblox Group in the denylist. Present only when kind = 1. #### Response Example ```json [ { "id": "denylist_abc123", "reason": "Spamming", "kind": 0, "user_id": "1234567890" }, { "id": "denylist_def456", "reason": "Exploiting", "kind": 1, "group_id": "0987654321" } ] ``` ``` -------------------------------- ### Publish Message to Roblox Universe Source: https://rowifi.xyz/docs/tower/custom-commands This workflow enables sending messages directly to a Roblox game using the Messaging Service. It starts with a Start node, publishes a message with PublishUniverseMessage (configured with Universe ID, Topic name, and Message content), which can then be received in the Roblox game. ```Workflow Start → PublishUniverseMessage (Universe ID, Topic, Message Content) ``` -------------------------------- ### Write to Roblox Datastore Entry Source: https://rowifi.xyz/docs/tower/custom-commands This workflow shows how to update an entry in a Roblox Datastore. It begins with a Start node, updates the Datastore entry using UpdateDatastoreEntry (configured with Universe ID, Datastore name, Entry key, and specific fields to update via dot notation), and then confirms the update with SendMessage. ```Workflow Start → UpdateDatastoreEntry (Universe ID, Datastore name, Entry key, updates) → SendMessage (output: update status) ``` -------------------------------- ### Get User Info and Roblox Username Source: https://rowifi.xyz/docs/tower/custom-commands This workflow retrieves user information and then looks up their Roblox username. It chains GetRoWifiUser and GetUsernameFromId nodes, sending the final result via SendMessage. This demonstrates combining multiple data retrieval steps. ```Workflow Start → GetRoWifiUser → GetUsernameFromId → SendMessage ``` -------------------------------- ### Lookup Roblox Username by ID Source: https://rowifi.xyz/docs/tower/custom-commands This workflow looks up a Roblox username from a given ID and sends the result as a Discord message. It uses a Start node to accept the 'roblox_id' parameter, a GetUsernameFromId node to perform the lookup, and two SendMessage nodes to handle success and failure cases. ```Workflow Start (param: roblox_id) → GetUsernameFromId (input: roblox_id) → SendMessage (Success: "The username for ID {roblox_id} is {username}") → SendMessage (Failure: "Could not find a user with ID {roblox_id}") ``` -------------------------------- ### Get User XP Source: https://rowifi.xyz/docs/api Retrieves the current XP value for a specific Roblox user within a Discord guild. ```APIDOC ## GET /guilds/{guild.id}/tower/xp/users/{roblox_id} ### Description Fetches the XP for the given Roblox user. Returns the following fields. ### Method GET ### Endpoint `/guilds/{guild.id}/tower/xp/users/{roblox_id}` ### Parameters #### Path Parameters - **guild.id** (string) - Required - The ID of the Discord guild. - **roblox_id** (string) - Required - The ID of the Roblox user. ### Response #### Success Response (200) - **user_id** (string) - The ID of the Roblox user. - **xp** (integer) - The current XP value of the user. #### Response Example ```json { "user_id": "1234567890", "xp": 500 } ``` ``` -------------------------------- ### Get Member Information Source: https://rowifi.xyz/docs/api Retrieves the RoWifi user information associated with a specific Discord guild and user ID. ```APIDOC ## GET /guilds/{guild.id}/members/{user.id} ### Description Returns the associated RoUser for a server with the following fields. ### Method GET ### Endpoint `/guilds/{guild.id}/members/{user.id}` ### Parameters #### Path Parameters - **guild.id** (string) - Required - The ID of the Discord guild. - **user.id** (string) - Required - The ID of the Discord user. ### Response #### Success Response (200) - **discord_id** (string) - The Discord ID of the user. - **roblox_id** (string) - ID of the linked Roblox account for the given `guild_id`. - **guild_id** (string) - The ID of the guild. #### Response Example ```json { "discord_id": "123456789012345678", "roblox_id": "9876543210", "guild_id": "112233445566778899" } ``` ``` -------------------------------- ### RoWifi Custombinds: Viewing Custombinds Source: https://rowifi.xyz/docs/custombinds This command allows users to view all their existing custombinds within the RoWifi system. It provides a list of configured custombinds. ```bash /custombinds view ``` -------------------------------- ### Create Denylist Entry Source: https://rowifi.xyz/docs/api Adds a new denylist entry (for a user or group) to a specific Discord guild. ```APIDOC ## POST /guilds/{guild.id}/denylists ### Description Creates a denylist for the given guild. The following fields are required. ### Method POST ### Endpoint `/guilds/{guild.id}/denylists` ### Parameters #### Path Parameters - **guild.id** (string) - Required - The ID of the Discord guild. #### Request Body - **reason** (string) - Required - The reason set for the denylist. - **kind** (integer) - Required - The type of the denylist (0 - User, 1 - Group). - **user_id** (string) - Optional - The ID of the Roblox User in the denylist. Must be present only when kind = 0. - **group_id** (string) - Optional - The ID of the Roblox Group in the denylist. Must be present only when kind = 1. - **code** (string) - Optional - The code for the denylist. Must be present only when kind = 1. ### Request Example ```json { "reason": "Scamming", "kind": 0, "user_id": "1234567890" } ``` ```json { "reason": "Cheating", "kind": 1, "group_id": "0987654321", "code": "SCAMMER" } ``` ``` -------------------------------- ### XP Commands API Source: https://rowifi.xyz/docs/tower/commands Manage user experience points (XP) by adding, removing, setting, locking, or unlocking their values. ```APIDOC ## POST /xp/add ### Description Adds XP to one or more users. ### Method POST ### Endpoint /xp/add ### Parameters #### Query Parameters - **xp** (integer) - Required - The amount of XP to add (positive integer). - **usernames** (string) - Required - A comma-separated list of usernames to receive the XP. ### Request Example ```json { "xp": 100, "usernames": "user1,user2,user3" } ``` ### Response #### Success Response (200) - **message** (string) - Confirmation message indicating XP was added. #### Response Example ```json { "message": "XP successfully added to user1, user2, user3." } ``` --- ## POST /xp/remove ### Description Removes XP from one or more users. ### Method POST ### Endpoint /xp/remove ### Parameters #### Query Parameters - **xp** (integer) - Required - The amount of XP to remove (positive integer). - **usernames** (string) - Required - A comma-separated list of usernames from which XP will be removed. ### Request Example ```json { "xp": 50, "usernames": "user1,user2" } ``` ### Response #### Success Response (200) - **message** (string) - Confirmation message indicating XP was removed. #### Response Example ```json { "message": "XP successfully removed from user1, user2." } ``` --- ## POST /xp/set ### Description Sets a specific XP value for one or more users, overriding their current XP. ### Method POST ### Endpoint /xp/set ### Parameters #### Query Parameters - **xp** (integer) - Required - The XP value to set (positive integer). - **usernames** (string) - Required - A comma-separated list of usernames whose XP will be set. ### Request Example ```json { "xp": 200, "usernames": "user1,user3" } ``` ### Response #### Success Response (200) - **message** (string) - Confirmation message indicating XP was set. #### Response Example ```json { "message": "XP successfully set for user1, user3." } ``` --- ## POST /xp/lock ### Description Locks the XP of a user, preventing them from receiving or having their XP taken away. ### Method POST ### Endpoint /xp/lock ### Parameters #### Query Parameters - **username** (string) - Required - The Roblox username of the user. ### Request Example ```json { "username": "user1" } ``` ### Response #### Success Response (200) - **message** (string) - Confirmation message indicating the user's XP has been locked. #### Response Example ```json { "message": "User user1's XP has been locked." } ``` --- ## POST /xp/unlock ### Description Unlocks the XP of a user, allowing them to receive XP once again. ### Method POST ### Endpoint /xp/unlock ### Parameters #### Query Parameters - **username** (string) - Required - The Roblox username of the user. ### Request Example ```json { "username": "user1" } ``` ### Response #### Success Response (200) - **message** (string) - Confirmation message indicating the user's XP has been unlocked. #### Response Example ```json { "message": "User user1's XP has been unlocked." } ``` ``` -------------------------------- ### Calculate and Report Datastore Values Source: https://rowifi.xyz/docs/tower/custom-commands This workflow performs a calculation on data retrieved from a Roblox Datastore before updating it. It involves GetDatastoreEntry to fetch data, an Add node for calculation, UpdateDatastoreEntry to save the result, and SendMessage to report the outcome. ```Workflow Start → GetDatastoreEntry → Add → UpdateDatastoreEntry → SendMessage ``` -------------------------------- ### RoWifi Custombinds: Creating a New Custombind Source: https://rowifi.xyz/docs/custombinds This command creates a new custombind in RoWifi. It requires a code argument (evaluating to true/false), a template, and optionally accepts priority and Discord roles. The code argument uses a Lua-like syntax. ```bash /custombinds new ``` -------------------------------- ### RoWifi Custombinds: Lua-like Scripting - Logical Operators Source: https://rowifi.xyz/docs/custombinds Demonstrates the logical operators supported in RoWifi's custombind scripting language, which is modeled after Lua. These operators include 'and', 'or', and 'not' for conditional logic. ```lua -- Logical Operators: -- 'and': If both operands are true or non-zero, then condition becomes true -- 'or': If any of the operands is true or non-zero, then condition becomes true -- 'not': Used to reverse the logical value of the operand. Aliases: ! ``` -------------------------------- ### RoWifi Custombinds: Lua-like Scripting - Relational Operators Source: https://rowifi.xyz/docs/custombinds Illustrates the relational operators available for use in RoWifi's custombind code arguments. These operators are used for comparing values and include greater than, less than, equal to, and not equal to. ```lua -- Relational Operators: -- '>': Greater than -- '>=': Greater than or equal to -- '<': Less than -- '<=': Less than or equal to -- '==': Equal to -- '!=': Not equal to ``` -------------------------------- ### Update Datastore, Notify via Message Source: https://rowifi.xyz/docs/tower/custom-commands This workflow updates a Roblox Datastore entry and then notifies a universe about the change. It uses UpdateDatastoreEntry to modify data, PublishUniverseMessage to send a notification, and SendMessage to confirm the overall process. ```Workflow Start → UpdateDatastoreEntry → PublishUniverseMessage → SendMessage ``` -------------------------------- ### RoWifi Custombinds: Lua-like Scripting - Supported Functions Source: https://rowifi.xyz/docs/custombinds Showcases the built-in functions supported within RoWifi's custombind scripting language. These functions allow checks for group membership, rank, Discord roles, and username substrings. ```lua -- Supported Functions: -- IsInGroup(GroupId): Checks if the user is present in the provided group. Returns a bool. -- HasRank(GroupId, RankId): Checks if the user has the provided rank in the provided group. Returns a bool. -- GetRank(GroupId): Gives the rank id of the user in the provided group. Returns a number. -- HasRole(RoleId): Checks if the user has the provided role in the Discord server. Returns a bool. -- WithString("String"): Checks if the provided string is a substring of the user's Roblox Username. Returns a bool. ``` -------------------------------- ### Group Acceptance API Source: https://rowifi.xyz/docs/tower/group Endpoints for accepting and declining join requests for Roblox groups. ```APIDOC ## POST /group/accept ### Description Accepts a user's join request for a specified Roblox group. ### Method POST ### Endpoint /group/accept ### Parameters #### Query Parameters - **`group`** (integer) - Required - The ID of the Roblox group. - **`username`** (string) - Required - The username of the user to accept into the group. ### Request Example ```json { "group": 1234567, "username": "ExampleUser" } ``` ### Response #### Success Response (200) - **message** (string) - Confirmation message indicating the user was accepted. #### Response Example ```json { "message": "User ExampleUser accepted into group 1234567." } ``` ## POST /group/decline ### Description Declines a user's join request for a specified Roblox group. ### Method POST ### Endpoint /group/decline ### Parameters #### Query Parameters - **`group`** (integer) - Required - The ID of the Roblox group. - **`username`** (string) - Required - The username of the user to decline from joining the group. ### Request Example ```json { "group": 1234567, "username": "ExampleUser" } ``` ### Response #### Success Response (200) - **message** (string) - Confirmation message indicating the user was declined. #### Response Example ```json { "message": "User ExampleUser declined from group 1234567." } ``` ``` -------------------------------- ### Set User XP Source: https://rowifi.xyz/docs/api Sets a specific XP value for a Roblox user in a Discord guild, overriding their current XP and potentially changing their rank. ```APIDOC ## POST /guilds/{guild.id}/tower/xp/users/{roblox_id} ### Description Sets XP of the given Roblox user. This will override the previous XP and will also promote or demote the user without taking the current rank into consideration. The following fields are required. ### Method POST ### Endpoint `/guilds/{guild.id}/tower/xp/users/{roblox_id}` ### Parameters #### Path Parameters - **guild.id** (string) - Required - The ID of the Discord guild. - **roblox_id** (string) - Required - The ID of the Roblox user. #### Request Body - **xp** (integer) - Required - The amount of XP to set. ### Request Example ```json { "xp": 500 } ``` ``` -------------------------------- ### Add or Remove XP Source: https://rowifi.xyz/docs/api Adjusts the XP for a given Roblox user within a Discord guild, potentially triggering rank changes. ```APIDOC ## PATCH /guilds/{guild.id}/tower/xp/users/{roblox_id} ### Description Adds/Removes XP to the given Roblox user. It will also promote or demote the user depending on the XP binds. The following fields are required. ### Method PATCH ### Endpoint `/guilds/{guild.id}/tower/xp/users/{roblox_id}` ### Parameters #### Path Parameters - **guild.id** (string) - Required - The ID of the Discord guild. - **roblox_id** (string) - Required - The ID of the Roblox user. #### Request Body - **xp** (integer) - Required - The amount of XP to add or remove. Use a negative value to remove XP. ### Request Example ```json { "xp": 100 } ``` ```json { "xp": -50 } ``` ``` -------------------------------- ### Delete Denylist Entries Source: https://rowifi.xyz/docs/api Removes one or more denylist entries from a specific Discord guild by their IDs. ```APIDOC ## DELETE /guilds/{guild.id}/denylists ### Description Deletes denylists from the given guild. It requires an array of `id` in the body (`id` can be obtained from the Get Denylists endpoint). ### Method DELETE ### Endpoint `/guilds/{guild.id}/denylists` ### Parameters #### Path Parameters - **guild.id** (string) - Required - The ID of the Discord guild. #### Request Body - **ids** (array) - Required - An array of denylist IDs to delete. - **id** (string) - Required - The ID of the denylist to delete. ### Request Example ```json { "ids": [ "denylist_abc123", "denylist_def456" ] } ``` ``` -------------------------------- ### Set User Rank Source: https://rowifi.xyz/docs/api Assigns a specific rank to a Roblox user in a Roblox group associated with the Discord guild. This action does not affect the user's XP. ```APIDOC ## POST /guilds/{guild.id}/setrank ### Description Sets the rank of the given Roblox user in the given Roblox group. This has no effect on the XP. ### Method POST ### Endpoint `/guilds/{guild.id}/setrank` ### Parameters #### Path Parameters - **guild.id** (string) - Required - The ID of the Discord guild. #### Request Body - **user_id** (string) - Required - The ID of the Roblox User. - **group_id** (string) - Required - The ID of the Roblox Group. - **rank_id** (integer) - Required - The ID of the rank in the Roblox Group (1-255). ### Request Example ```json { "user_id": "1234567890", "group_id": "0987654321", "rank_id": 10 } ``` ``` -------------------------------- ### RoWifi Custombinds: Deleting a Custombind Source: https://rowifi.xyz/docs/custombinds This command facilitates the deletion of a specific custombind. Alternatively, custombinds can be deleted via the RoWifi dashboard. ```bash /custombinds delete ``` -------------------------------- ### Reverse Search Discord ID from Roblox ID Source: https://rowifi.xyz/docs/api Finds Discord IDs linked to a specific Roblox ID within a given guild, provided reverse search consent has been granted. ```APIDOC ## GET /guilds/{guild.id}/members/roblox/{roblox_id} ### Description Returns an array of `discord_id` linked to that particular Roblox account for the given `guild_id`. **NOTE:** This endpoint will only return the set of Discord IDs from which Reverse Search consent has given. Reverse Search Consent can be given with `/api consent reverse-search`. ### Method GET ### Endpoint `/guilds/{guild.id}/members/roblox/{roblox_id}` ### Parameters #### Path Parameters - **guild.id** (string) - Required - The ID of the Discord guild. - **roblox_id** (string) - Required - The ID of the Roblox user. ### Response #### Success Response (200) - **discord_id** (string) - The Discord ID of the user. #### Response Example ```json [ "123456789012345678", "987654321098765432" ] ``` ``` === COMPLETE CONTENT === This response contains all available snippets from this library. No additional content exists. Do not make further requests.