(DISCONTINUED! DO NOT USE!) GildedRadio | Communicate between your Roblox Server and your Guilded Server!

Overview

This module allows you to connect a Guilded Server to your roblox servers quickly, easily, and painlessly.

This is the initial release, up to version 0.2.3; as such, there are still features I intend to add to this module.

For now, you can pick up the module from github here. Availability as packages in other repositories are pending v1.

Features

  • Create, update, and delete channels on the fly! This module supports editing the basic information for all ten channel types that Guilded has.
  • Create, update, and delete messages – React to your members and even write your own bots that live in Roblox servers!
  • Manage members from the comfort of your game! You can review member information and apply kicks and bans with the functions available in GildedRadio.
  • XP for you, and for you! This module contains functions to award and set Guilded XP directly. Pair it with level rewards in your server settings to give your players even more reasons to play your game!
  • Role management included! GildedRadio has everything you need for manual role handling. Promote your loyal guild members in style, without even needing to touch Guilded itself!
  • Forum compatibility? You betcha! You can make topics, read and make replies, even pin and lock topics as if you were running a real forum.

In addition to that:

  • Excessive – and I DO mean excessive – documentation. Each parameter has enough labeling on it to clarify exactly what you’re getting. Also includes links to the Guilded API, showing you the layout of the table that every individual function returns! Install the Documentation Reader plugin to read the docs from inside Studio.
  • Set-and-forget. This module uses a setup function to take in the initial things it needs; after which, you can interact with it as if your Guilded server was already connected! Setup time is minimal.
  • Wrapper friendly! A logging function is available; if turned on, the module will fire a BindableEvent child with the details on every individual call it makes. This allows one to easily wrap the module with their own interface, should they choose to!
  • Errors are clear and friendly! Every warning or error starts with the module’s name, “gildedRadio”, as the first word of the error message. This allows you to filter for error messages coming specifically from this module, as well as prevent stack traces from leaking keys to the kingdom since the error message gives away the source!

Precautions

  • This module requires HTTPService, and makes a call to verify the module was successfully initialized. As such, it shares the limit of 500 HTTP requests per minute with any other modules you have that may make their own HTTP calls.
  • This module is in active development. While I have tried to use permanent function names according to the actions they cause (make, get, set, remove, and delete) some function names may change over time. I will make honest attempts to maintain compatibility with older function names if they do change, and leave ample warning in new version notices if such a thing happens.
23 Likes

v 0.2 update! Now the module can interact with forums, and has much better logging, in addition to being mostly in line with Guilded’s Bot Library guidelines, limited only by Roblox not letting me set the User-Agent string. Instead, I’ve put my module name inside an X-Identity header, which should hopefully work the same way.

To log a request from the module:

--place this script in the same folder as gildedRadio
script.Parent.gildedRadio.HTTPSend.onEvent:Connect(function(requestData)
print("GildedRadio made a request! Printing request table now.")
print(requestData)
script.Parent.gildedRadio.HTTPReceived.onEvent:Connect(function(responseData)
print("GildedRadio received a response! Printing response table now.")
print(responseData)
2 Likes

Though, I don’t think that many people use Guilded, I can probably say this is a neat resource.

5 Likes

Figured it was worth a quick post: I’ve updated gildedRadio to 0.2.1 to comply with the new ruling for Library / Bot Guidelines. I’m now 100% compliant! :partying_face:

A couple of other small changes were worth the version bump:

  • I’ve added Roblox version reporting to the X-Secondary-User-Agent header. This was not necessarily required, but I figured every extra bit of debug information would be worth the trouble. It’s possible for Studio to go so far out of date that HTTPService no longer works properly, so reporting version() should help these edge-cases show up.

  • I noticed HTTPSend was only being fired on the first attempt on a request the library made, instead of every attempt. This would cause it to use more requests then was visible from debug output, so I’ve fixed it.

  • If you dislike the module retrying all bad requests, you can now disable retries altogether with a bool assigned at the top of the module (set to 1 to disable retries, heed the warning in the comment above it). This is a temporary patch until I add the ability to choose how many retries you want to allow.

4 Likes

Small update bump to 0.2.3.

There’s more detailed information in the github, but a private bug report asked me to remove inPublic from the makeChannel function, as this was breaking and prevented users from making channels due to a change made to the API. This, along with a few other changes such as custom retry length, have been implemented. I’ve also decided that asking each and every developer to read API documents for table layout is not a good thing to do and have decided to write a table rebuilder to make it easier to decode the API data. Right now, the rebuilder function is empty in the public upload, but later it will take API data and rebuild the response as a Lua table, to avoid issues with Roblox’s metatable support.

This is part of a much larger update in the works which plans to, among other things, support custom Guilded emojis inside Roblox. That update is in a private respository for now, but I am working torwards a 1.0 release at some point in the future.

2 Likes

damn it would be cool if we could do all of this on discord too

Discord has all of this functionality, but they attached most of it to a Bot token, which requires webSocket support to use. Roblox does not support web sockets.

If you want WebSockets, please make sure to leave your support in this feature request. Roblox seems to think we want to be able to run a WebSocket server on Roblox’s services, which is the wrong assumption, a polar opposite from the actual request.

1 Like

GuildedRadio has received an emergency push to allow it to continue to connect to Guilded after a switch is flipped. If your copy of GuildedRadio is below version 0.2.4 then it will be unable to connect to the API as of June 4, 2024.

Please ensure that you update in order to stay compatible!

A very large update is still in the works and is close to reaching release state; however in the mean time version 0.2.4 will be able to connect to Guilded’s API unless another breaking change goes out.

1 Like