Tribe Log Relay

Tribe Log Relay 1.1

No permission to download
Gives tribe owners the ability to have in-game tribe log events forwarded to a discord channel of their choosing. Also gives server admins the ability to log all tribe activity to a private admin discord channel.

Chat Commands:
Dependencies:
  • Microsoft Visual C++ Redistributable for Visual Studio 2019 - My plugins are compiled with the newer Visual Studio 2019. If you are unable to load my plugin and get error 126 you need to install this.
  • Ark Permissions Plugin - You don't need to configure anything if you don't want to use the permission system but you must have this plugin installed or Tribe Log Relay will not function properly.

Update Instructions:
  • Download and open the zip file.
  • Copy the "PluginInfo.json" file directly on top of your existing "PluginInfo.json".
  • Open your "config.json" and copy any changes over to the new "config.json" or vice versa.
  • Make sure the updated "config.json" is now in the plugin directory.
  • Stop your server and replace the "TribeLogRelay.dll".
  • Start your server again.

Configuration:
JSON:
{
  "ServerName":"CustomServerName",
  "CommandText":"/TLR",
  "UseAdminLogging":false,
  "AdminDiscordWebhook":"",
  "DiscordLinkFormat":"https:\/\/discordapp.com\/api\/webhooks\/[^\/]+\/[^\/]+",
  "UsePermissions":false,
  "PermissionName":"TLR.Add",
  "UseKeywordMatching":true,
  "Keywords":{
     "Your Tribe killed ":false,
     " was killed ":true,
     " demolished a ":false,
     " claimed ":false,
     " unclaimed ":false,
     " was added to the Tribe!":false,
     " was removed from the Tribe!":false,
     " was auto-decay destroyed!":true,
     " starved to death!":true,
     " was destroyed!":true,
     " destroyed their ":false,
     "Tamed a":false,
     " was promoted ":false,
     " was demoted ":false,
     " set to Rank Group ":false,
     " uploaded ":false,
     " downloaded ":false,
     " froze ":false,
     " unfroze ":false,
     " renamed ":false,
     " destroyed your ":false
  },
  "Messages":{
    "Sender":"TribeLogRelay",
    "ChangedWebhook":"Successfully set your tribes Discord Webhook!",
    "Invalid":"<RichColor Color=\"1, 0, 0, 1\">Webhook appears to be an invalid discord webhook!</>",
    "Error":"<RichColor Color=\"1, 0, 0, 1\">Webhook did not get updated, try again!</>",
    "NotAllowed":"<RichColor Color=\"1, 0, 0, 1\">Only the tribe owner is allowed to use this feature!</>",
    "NotFound":"<RichColor Color=\"1, 0, 0, 1\">Unable to locate your tribe entry! Contact the server admin.</>",
    "Usage":"\nTribe Owners Only!\nUsage: /tlr <discord webhook>\nVisit https://bit.ly/33Jw8i5 for information about Discord Webhooks.",
    "Reload":"Configuration reloaded",
    "NotReload":"<RichColor Color=\"1, 0, 0, 1\">Configuration was not reloaded</>"
  },
  "Mysql":{
    "UseMysql":false,
    "MysqlHost":"localhost",
    "MysqlUser":"user",
    "MysqlPass":"pass",
    "MysqlDB":"dbname"
  }
}

Detailed Configuration Info:
ServerName: This will appear at the beginning of all discord messages to identify the server the message comes from.
  • Example Tribe Message: "@everyone (CustomServerName) Day 28, 07:22: Tribemember LethalTest - Lvl 1 was killed by a Kaprosuchus - Lvl 90!"
  • Example Admin Message: "(CustomName) (NewTribe) Day 28, 07:22: Tribemember LethalTest - Lvl 1 was killed by a Kaprosuchus - Lvl 90!"
UseAdminLogging: This will turn on the admin logging feature to send all tribe logs to AdminDiscordWebhook.

AdminDiscordWebhook: This is the webhook that will be used by the UseAdminLogging feature.

DiscordLinkFormat: This is regex that verifies the format of the discord webhook is correct. You do not need to change this setting.

UsePermissions: If you would like to only allow certain users access to set tribe webhooks set this to true otherwise only Tribe Owners will have permission. Enabling this feature does remove the ability for Tribe Owners to use the command. More Info

PermissionName: This is the permission you will setup in-game attached to a group which is then assigned to players. More Info

UseKeywordMatching: This will send only tribe log messages that match entries in the Keywords list below. Admin logging does not use this feature and logs everything.

Keywords: If using "UseKeywordMatching" any keyword detected in a tribe log will send the message to the tribes discord. Keep in mind Keywords are only used for Tribe Discord messages and Admin Discord gets every message. You can add or remove anything from the list you want.
  • Format: "keyword":important
    • "keyword": This can be any text that can appear in the tribe log. I have already included many of them. This is the text that is used to figure out what needs to be sent if using the keywords matching feature.
    • important: Replace the word important with either true or false. If set to true it will add "@everyone" to the discord message effectively pinging users in discord for messages that contain the keyword. If set to false it does not ping users and sends a normal message.
Messages: These are just used for providing in-game feedback to users. Make sure based on the config options you are using the messaging makes sense to a user. If you change the /command make sure it is noted in the messages etc.
  • Sender: Any messages sent to the player by the plugin will be prefixed with this text in the chatbox.
    • Example: "TribeLogRelay: Successfully set your tribes Discord Webhook!"
MySQL: These settings will only be used if you plan to use a MySQL database.
  • UseMysql: true or false (false uses the existing sqlite database and true requires you to have a MySql database setup. The rest of the settings are only needed if you set this setting to true.

Message Queue System v1.1+
Just wanted to put some additional context around this changelog note.
Reworked the message queue system to ensure it can handle large amounts of events at once. Admin logging if enabled is set so that it should not trigger the discord webhook rate limit. Using the same webhook for multiple things could lead to rate limiting preventing the webhook from getting messages from any source for a "cooldown" period.
Just some background before I begin. Discord Webhooks support 30 messages per minute with each message allowed to be upto 2000 characters. You will see why this is important shortly.

Here is my testing scenario:
  • Spawn in 100 tamed dodo's. Lay down 40-50 c4 then detonate them. This will create hundreds of log messages in game instantly that will be sent to discord.
How each version handled this scenario:
  • Version 1.0: Would only catch a few of these events because the events were sent to discord in real-time 1 at a time and missing the majority of the messages. The discord webhook would be overloaded and put into a rate limited state preventing messages from being delivered for X seconds.

  • Version 1.1: Will queue up the messages and deliver them in batches to maximize how much data can be sent to discord in a single message. So for instance it will send 1 message that contains up to 2000 characters (maximum size permitted for webhooks) of the tribe log messages. For this scenario I found it sending roughly 19 logs lines in a single message which greatly reduces the number of messages that need to be sent while still delivering them in a timely manner. In my tests it would deliver around 400 tribe log lines in a matter of a few seconds. So this new system should scale very well for busy servers with lots of action generating lots of log entries.
As stated above I have the Admin logging feature tuned to send the exact amount of messages allowed per minute so it should never get rate limited as long as that webhook is only used for a single server. Tribe webhooks are a bit different because they would need to generate a huge amount of logs (500 or so) within 60 seconds to cause them to get rate limited.

Hopefully this all makes sense. Let me know if you have any questions.

NOTES: This plugin no longer supports plugins.unload feature in the API. Server restarts are required to update the plugin going forward. Using this command will tell you that the command worked but I assure you it did not.

Shoutouts to @WETBATMAN @Substitute @Michidu @OwnProx @Foppa and anyone else for either helping me on discord or sharing open source code to learn from.
Author
Lethal
Downloads
39
First release
Last update
Rating
5.00 star(s) 2 ratings

Latest updates

  1. Tribe Log Relay v1.1

    Changelog: Made the slash command changeable so you can change "/TLR" to "/DiscordLog" for...

Latest reviews

like it! also with the @everyone notification if true
this is a very good implementation of a plugin based tribe log relay. it does a very good job of doing what it was designed for. so far it has shown to be easy for players to utilize and admins to setup.
Top