Resource icon
Introducing Discord Integrator!
- Seamless discord integration with Ark
(Requires MySQL)

Features:
  • Safely Multi-Threaded plugin!
  • C++ Discord Bot using Qt web sockets
  • Bot now uses my custom made from scratch Discord C++ API utilizing Qt framework.
  • Bot is ran by an external application, which is not a plugin, but standalone application.
  • Bot includes a members search, making finding a certain player a breeze.
  • Works on as many servers as you want!
  • Adds player that register with the Bot to the "Discord" permission group, also grants them permission "Discord". (automatically created)
  • Automatic mute certain words using regexpressions or simple contains check.
  • Mute players via rcon or console commands.
  • 2way console window for discord, send commands and log them!
  • Now with ability to run the Discord bot separate from the plugin for max stability! More documentation on this will come, for now feel free to ask on Discord. The files for this is available on Discord.
  • Seamless management of in-game Discord permission group as players leave/enter the Discord server.
  • Ability to automatically give Discord users roles based on in-game permission groups they have.
  • Ability to send a Discord warning message to players as their in-game structures are under attack. (only warns when they are offline. And in private discord message)
  • Each player can individually set how often a Raid Warning would be sent. Or if it's sent.
  • Seamless 2-way integration of a Discord text channel with the in-game General channel.
  • !players on your Discord channel will make the bot post list of online players.
  • Colorable tags for users.
  • Ability to color nicknames and chat messages based on group^^
  • Cross server chat that looks the same on all servers, except [server] tag!
  • Cross server tribe chat! Works automatically. Requires the same tribe owner on all clustered server. And if added on a new server. Owner must login at least once on each server to connect tribes.
  • Fully configurable!

Config File with explanations:
This config is a bit outdated. Will update soon.
JSON:
{
  "ServerName": "",               // Must be inique. IF empty it defaults to mapname.
  "MySQL": {
    "UseMySQL": true,                     // Must be true until SqLite is implemented.
    "UseMySQL CrossServerChat": true,     // Cross server chat.
    "CrossServerChatFetchInterval": 0.25, //How often the chat is fetched in seconds.
    "HostAdress": "localhost",
    "Username": "root",
    "Password": "mysql",
    "DataBaseName": "discord_database"    // MYsql database name, plugin will create the tables here.
  },
  "UseAutoPermissionsIngameToDiscord": true, // If true, will automatically set user Discord role, if User has configured permission.
  "AutoPermissionsIngameToDiscord": { // Array that contains the configured auto ingame Permissions to Discord Roles.
    "Admin": [ // Ingame permission group name;
      "834907747594575572" // Discord Role ID;
    ],
    "Vip": [ // You can add multiple ingame permissions.
      "424907728503177216",
      "503177216424907728" // And multiple Discord Roles, as demonstrated here.
    ]
  },
  "DiscordBot": {
    "DiscordBotToken": "PutYourBotTokenHere", // This is your Bot's token. That you get from Discord Developer site.
    "RaidWarningMinInterval": 15, // Minimum amount of minutes between a raid warning sendt to the same user by the Discord Bot.
    "IntegratedChannelID": "0", // The ID of Discord Channel to integrate ingame global chat with. 0 = OFF.
    "IntegratedChannelWebHook": "webhook URL", // Webhook to the channel to post ingame messages too.
    "IngameMsgNameTagFormat": "[Discord]: {}", // The Ingame Name Tag format of Discord->Ingame messages. Default = [Discord]: John Doe
    "IngameMsgMessageFormat": "{}", // Format of Discord -> Ingame messages. Default adds nothing to the message.
    "IngameName_IN_Tribe_Format": "{}  **{}**[{}]:  {}\\n", // The Name Tag format of Ingame->Discord messages. When the speaker is in a tribe. Default = <mapname>   **<name>**[<tribe>]:  <message>
    "IngameName_NO_Tribe_Format": "{}  **{}**:  {}\\n", // The Name no-tribe Tag format of Ingame->Discord messages. When the speaker is NOT a tribe. Default = same as above, without tribe.
    "WebHook_IN_Tribe_Format": "**{}**[{}]:  {}\n",  //only \n here in webhook..
    "WebHook_NO_Tribe_Format": "**{}**:  {}\n"
  }, // PS: Any newline tag except the webhook must be escaped \\n and NOT \n.
  "DiscordBotMessages": { // Messages sent by bot
    "AuthencationMessage": "Thank you for joining our Discord!\\nTo link your discord to the server go in game, and type : /setdiscord {}", // Message sendt by bot after /setdiscord <name> is called by player ingame. Returns random 4digit code.
    "RaidWarning": "RAID WARNING: You're ingame structures are under attack!", // RaidWarning message sent by bot to players that have enabled it.
    "LinkedChannelSpamProtMsg": "<@{}> You must wait {} seconds to write another message." // Spam protection message in integrated channel.
  },
  "Messages": { // Messages sent to player ingame.
    "DiscordActivationCodeSent": "Sent activation code to {}. Please type the activation code received ingame.", // Player used /setdiscord and plugin successfully found the user on the server. Now sending auth code on Discord.
    "DiscordAlreadyLinked": "You are already linked with username:<RichColor Color=\"0, 1, 0, 1\">{}</>", // Player is trying to link same Discord twice.
    "DiscordCannotFindUserName": "<RichColor Color=\"1, 0, 0, 1\">Cannot find username: {}</>, make sure you have joined our server and that the username provided is correct.", // Cannot find the Discord user provived by player on the server.
    "DiscordLinkFail": "<RichColor Color=\"1, 0, 0, 1\">Wrong or expired validation code.</>", // Player wrote wrong auth code.
    "DiscordLinkSuccess": "<RichColor Color=\"0, 1, 0, 1\">Successfully linked your Discord!</>", // Successfully linked their Discord.
    "DiscordLinkUsage": "Link you Discord Account with our server and receive benefits like Raidwarning on Discord! <RichColor Color=\"0, 1, 0, 1\">/setdiscord <username></>",
    "DiscordLinkedWith": "You are linked with: {}",
    "DiscordRaidWarningActive": "Raid Warning activated. Message Interval set to: {} minutes", // User has just activated raid warning.
    "DiscordRaidWarningError": "<RichColor Color=\"1, 0, 0, 1\">ERROR.</> Correct usage:<RichColor Color=\"0, 1, 0, 1\">/raidwarning <minutes></>", // Wrongly formatted /raidwarning command
    "DiscordRaidWarningNotActive": "Raid Warning NOT active. Use /raidwarning <minutes>  to activate!",
    "DiscordRaidWarningNotLinked": "You need to link your Discord with<RichColor Color=\"0, 1, 0, 1\">/setdiscord</> before you can use this command.",
    "DiscordRaidWarningOff": "Raid Warning Turned<RichColor Color=\"1, 0, 0, 1\">Off.</>", // Message when player sets raid warning OFF.
    "DiscordRaidWarningSet": "Raid Warning set to once each {}. minutes", // Message when player sets raid warning.
    "setDiscordWrongUsage": "<RichColor Color=\"1, 0, 0, 1\">Error.</>Usage:<RichColor Color=\"0, 1, 0, 1\">/setdiscord <full username></>" // Wrong usage of /setdiscord command.
  },
  "UseChatColors": true, //Use ingame chat colors. (name, tag and message)
  "ChatColorsByGroup": { //defined chat colors by groupname.
    "Admins": {
      "Tag": "[Admin]", //Tag shown before nickname. Add space if you want it.
      "R": 0.5, // Message Ged       you can use 255 rgb values directly on all colors, the plugin will calculate ark values.
      "G": 0.8, // Message Green
      "B": 0, // Message Blue.
      "NameR": 0, // name colors
      "NameG": 1,
      "NameB": 0,
      "TagR": 0, // Tag colors
      "TagG": 1,
      "TagB": 1
    },
    "Discord": {
      "Tag": "[Linked]",
      "R": 0,
      "G": 1,
      "B": 1,
      "NameR": 1,
      "NameG": 0,
      "NameB": 0,
      "TagR": 0,
      "TagG": 1,
      "TagB": 0
    }
  },
  "ChatColorsDefault": { //default name colors
    "PlayerName_R": 0.859,
    "PlayerName_G": 0.804,
    "PlayerName_B": 0.09
  }
}

PS: You can use regular 0-255 RGB values for colors.

How to install and configure:
You will need a Discord application client id and a bot token. You can follow: this guide to get one.​
Do not use the invite link provided by the guide above, instead use the one below for correct permissions:​
Posting this link with your client ID should show this: (Name will be the name you chose)​
Click authorize and the bot should join your server.
You should manually check that bot has administrator permission.
You also need to make sure that your bot's role is above every other role in the discord server role config list.


Now you can start configuring the config.json.

To find Discord Role IDs check this link

To find Discord Channel IDs do this:

On Discord, open your User Settings -> Appearance -> Enable Developer Mode.


Right click on the Discord text channel you want the bot to interact with and press "Copy ID".

You now have the required ID for the config file!


Ingame Commands:
  • /discord - Prints information message.
  • /raidwarning <minutes> - Sets the raidwarning to <minutes> 0 = Off.
  • /setdiscord <username> - Sets player Discord username, no quotes needed. Can also use Discord ID
    • Example: /setdiscord woolypenguin#3974
  • /setdiscord <authkey> - Authorizes player with received code.

Bot Commands:
  • !players - Prints player list on server.
  • !cmd <console command here> <- this will execute on all servers
  • !servercmd <DI-servername> <console command> <- for specific server
Console Commands:
  • cheat di.reload - Reloads config.
  • cheat DI.Mute <steamid> <hours> <minutes> - mutes steamid for X hours Y minutes.
  • cheat DI.Mute <steamid> <minutes> - mutes steamid for X minutes.
RCON Commands:
  • cheat di.reload - Reloads config.
  • cheat DI.Mute <steamid> <hours> <minutes> - mutes steamid for X hours Y minutes.
  • cheat DI.Mute <steamid> <minutes> - mutes steamid for X minutes.

Purchase Info:
After payment join my Discord via "Get Support" button (top right), and send me your hwid. The plugin will print it in console when not authorized.
Please give me at least 1-24 hours to setup hwid info. No new DLL is needed.
This purchase comes with basic support if needed.

Hwid Info:
- Each license represents a physical machine, so 6 ark servers running on one machine would only need 1 licence, Additional licensee's are required when using multiple physical servers.
- Are you moving server host/upgrading hardware and worried about the hwid? Not a problem send me a pm, here or on discord, with the new hwid and I will have it updated. In most cases within the hour, but it can take up to 24 hours depending upon my availability at that moment.

Plugin works with Atlas. But still needs a way to fetch tribe names. (last needed atlas part)
For questions or more information join my Discord via this link: https://discord.gg/fGPevkF
(This is a temporary link, and unless assigned a role, you automatically leave server when you go offline on discord.)
Author
woolypenguin
Downloads
178
Type
Digital product
License duration
1 Years
Price
45.00 EUR
Renewal price
17.00 EUR
Views
12,416
First release
Last update
Rating
4.87 star(s) 15 ratings

More resources from woolypenguin

Latest updates

  1. 1.41

    - Adds ability to create fully dynamic discord commands that executes whatever ARK console...
  2. 1.3.3

    Discord Integrator 1.3.3 - Greatly improved the included default regexpressions. - Made it so...
  3. 1.1.5b

    - Fixed double post to Discord of login data when players transfer servers.

Latest reviews

When this plugin wants to completely work, it's great!
The plugin half of things is fine. We experience no lag from having a cross-cluster chat system despite our MySQL database being on a separate machine from our servers, which I've found has been the case with similar plugins out there.
However, while I want to be able to give this plugin 5/5 stars. I can't.
The bot that comes with this plugin is designed to give Discord features that integrate with the plugin on your server(s) but lately our bot hasn't been working at all. As in, won't stay loaded for more than a few hours before it crashes for some unknown reason.
I say "unknown reason" because there is no logging available at all with the bot program. Yes, there is a log tab on the bot program but it doesn't do anything. The only reply I've gotten out of Wooly on the matter is "It can crash if it loses connection to MySQL" but without any logging data or otherwise we can't confirm or deny if that's the case. Why is there a log tab if there is absolutely no logging on the bot?
What's more, I more times than not am waiting a week or more to hear the simplest replies that are entirely unhelpful on the whole matter on the Discord. Which of course raises more questions in which I wait another several days to hear back. Sadly general discussions gets more attention than any help channels do and it's incredibly frustrating to have paid over $50 USD for a plugin that doesn't function as a whole and the support is much less than desirable.
I get Wooly has a life and things happen, but it's incredibly frustrating to feel ignored entirely while we're having discussions elsewhere in plain view but you're virtually ignored and shrugged off.

If you're OK with the Discord Bot portion may or may not be working for some unknown reason that it can't tell you about (because again, there is no logging available to enable) and you're only using this plugin for a cross-cluster chat system, this is a good, reliable one.
But to have your cluster-chat link to your Discord (or any other Discord connection) and only have it half-working is incredibly frustrating. Especially when your players are used to it working for months, only to later have to tell them it's suddenly no longer cooperating on a daily basis.
woolypenguin
woolypenguin
I'm sorry about the crashes, but I cannot provide support for all kinds of specialist VM systems. There's too many environmental variables involved here. Neither can I know exactly what is wrong with your system making it crash.
Thank you great job!
An amazing plugin that works flawlessly. Took a small while to learn to setup but was easy and works great.
This mod is amazing. The plugin dev does answer any questions you have, I would love to see better documentation for dummies like me. Still would recommend this plugin.
Probably the most supporting plugin developer you will find, he stays with you till you and him know the plugin is working fine.
instant reply to get set up, clear installation instructions no problems so far :) great plugin thanks
works as expected and has tons of features
This plugin is the best out there for the money. The dev truly cares and it shows! Hes constantly making updates and improvements to this plugin for the better!
The best plugin I have ever installed :) the developer helps immediately and responds very quickly. after a few minutes reading it was also very easy :)
quick response, wooly troubleshooted crashing issue with other mod dev to get things working properly. easy to setup and this plugins cross server chat actually works with discord.
Top