DiscordLink 3.2.0

Due to human (non-bot) spam the first contribution of a user has to be reviewed and activated manually, all further contributions do not require this.
As long as a user does not have at least one reviewed and activated contribution, the user is unable to edit his profile, set a avatar, title picture or a signature.

DiscordLink Connects your Eco server to your Discord server for seamless cross posting of chat messages, live updated displays of the server status and many useful commands!


  • Seamless communication
    Connect your Eco chat to one or multiple Discord servers and channels for seamless and automated communication between Eco and Discord.
  • Discord Displays
    See live updated information on Server Status, Elections, Work parties, Store Contents and more in Discord.
    For a full list of all supported display modules, see the display module list.
  • Discord Feeds
    See feeds of ingame events such as Trades and Crafts in Discord.
    For a full list of all supported feed modules, see the feed module list.
  • Discord Inputs
    Add predefined messages in Discord and invoke them ingame using the /Snippet command.
    For a full list of all supported input modules, see the input module list.
  • Discord Roles
    Automatically assign roles to users based on their ingame specializations and demograhics.
    For a full list of all supported role modules, see the role module list.
  • Troubleshooting Tools
    DiscordLink comes with troubleshooting commands that you can use both in Eco and in Discord, to help diagnose configuration errors.
  • Helpful Commands
    DiscordLink features a number of helpful commands both from within the game and from Discord.
    Here's the full command list and below is a sneak peek on some of the more prominent ones!
    • ?ExecuteEcoCommand - Execute any ingame Eco command straight from Discord! Don't worry, only you and your admins get access to the privileged commands :)
    • /dlt - The DiscordLink Trades command will help you find where you can buy and sell everything you need to run your profession! Search by item, tag, player or store name!
    • /snippet - Post a prepared text snippet in Discord, straight into Eco! Tired of answering the same questions over and over? Make a snippet!


Discord Chat Synchronization

In order to synchronize the ingame chat with a Discord channel, you will need to set up a Discord bot and connect it to your Eco server via the DiscordLink config. See installation guide for information on how to do this.


DiscordLink offers a variety of modules that can show various types of information such as player lists, elections, laws and currencies in Discord. See the Modules Feature List for more information.


See the command list for available commands and how to use them.


  1. Emojis
    When sending Emojis from Discord to Eco, bear in mind that these may either be removed or show up ingame as a □ character.
  2. Discord Mentions
    Make sure that @ or # is not the first character in your message when writing Discord mentions. Eco will consider them ingame mentions of players or channels and your message will open a chat channel ingame instead of being sent to the chat you intended and will therefore never get sent to Discord.


See the installation guide.


Server GUI

See this configuration guide for self hosted servers with access to the server GUI.

Config File

See this configuration guide for servers hosted by third parties, where you lack access to the server GUI.


Do you have suggestions, questions or maybe a problem you need help with?

Join the Eco Community Discord server here! https://discord.gg/pCkWfzQ

DiscordLink has its own group of channels where you can talk to other users and the developers!

I want to contribute!

DiscordLink is open source on Github and pull requests are very welcome! For information on how to set up the development environment, see the project setup guide.


I develop and support the Eco World Mods and DiscordLink in my spare time.

If you find them useful, I'd greatly appreciate a small donation :)

[Blocked Image: https://image.modcdn.io/members/f565/2743775/profile/coffeesmall.png]


  • Version 3.2.0

    --- Improvements ---

    * Improved overall stability for module updates.

    --- Bugfixes ---

    * Fixed an issue making the bot unable to read messages in Discord.

    * Fixed an issue related to sending DM:s to users who have blocked DMs.

    * Fixed the Server Time field of the Server Info Display using local time.

    * Fixed webserver URLs being malformed.

    * Reworked module handling to avoid module duplication (related to the duplication bugs).

  • Version 3.1.0

    --- Additions ---

    * Added ExecuteEcoCommand command for running Eco commands from Discord.

    * Added an option for prefixing timestamps to all chatlink messages.

    * Added "DL-Update" command for forcing an immeadiate update of all active modules.

    * Added "DL-ClearRoles" command for clearing out all Discord roles created by DiscordLink.

    --- Improvements ---

    * The Server Info Display now utilizes Discord timestamps.

    * The /DLT command now takes authorization into account when coloring and sorting trade entries.

    * Removed the timestamp from the Server Info Display title as it was redundant.

    * Removed "WebServerAddress" config field as the same option is now available in the vanilla Network.cfg config file.

    --- Bugfixes ---

    * Fixed modules being duplicated on plugin restart - This fixes chat message duplication.

    * Fixed roles not being assigned when created.

    * Fixed chatlinks beyond the first one not being used (Thanks Lord-Helmchen!)

    * Fixed display config updates not taking effect until plugin restart.

    * Fixed Server Info Display displaying incorrect meteor info after the meteor was destroyed.

    * Fixed Server Log Feed being called "Server Status Feed" in the Server GUI display.

    * Fixed multiple time outputs not handling values over 24 hours.

    * Fixed "internal server errors" generated by Discord being thrown as warnings in the server log.

    * Fixed a crash that could occur at server startup.

  • Version 3.0.0

    --- Important Notes ---

    • EM Framework is no longer shipped with DiscordLink releases and is instead treated as a dependency. Download it from here
    • The required permissions have been changed. Make sure that your permissions match those listed in step 14 of the install guide
    • The config has had many changes to simplify setup, add new features and rework existing ones. It is advised to create a new config file. Existing configs WILL NOT WORK!
    • This update is pretty massive. The reason for this is that a lot of the basic functionality of the plugin has been reworked to improve stability and better facilitate future development. Future updates will arrive in smaller batches.
    • Chat logging functionality has been removed as this is now a feature in the base game.
    • The plugin has been reworked to target a single Discord server for ease of setup and development.
    • The config evaluation is no longer printed when the config is changed. Use the added VerifyConfig and VerifyPermissions commands or the GUI dropdown to trigger config evaluation.
    • The plugin no longer automatically restarts when you change the bot token. Use restart commands or dropdown options to restart the plugin after changing the bot token.

    --- Linked Accounts ---

    • Fixed account linking failing in many cases.
    • Replaced the ?verifylink command with reaction buttons.
    • Added election reaction voting.
    • Added trade watcher feeds - See filtered trades in real time in bot DMs.
    • Reworked watched trades into trade watcher displays.

    --- Roles ---

    • Added Discord role assignment for users who have linked their accounts.
    • Added ingame specialties synchronization to roles in Discord.

    --- Displays ---

    • Added exhaustion information to Server Info Display.
    • Added additional customization for the Currency Display.
    • Added Web Server Url to election display message.
    • Added Webpage Address Link to Server Info.
    • Removed redundant PlayerDisplay module.
    • Replaced "Meteor Has Hit" component of Server Info display with a "Server Time" component.
    • Fixed election list component in Server Info showing empty fields.
    • Fixed player list component of Server Info causing misalignment.
    • Fixed creators list in Server Info law component not being split into multiple lines.
    • Fixed missing newlines in Server Info message.
    • Updated online Player Count component of Server Info to avoid confusion regarding server max slots.
    • Server info channel links now show player count by default.

    --- Feeds ---

    • Added server log feed.
    • Fixed chat channel feed only being able to communicate between channels using the same name.

    --- Commands ---

    • Added admin override to Discord command channel requirements.
    • Added VerifyConfig and VerifyPermissions commands for troubleshooting setup issues.
    • Added many commands for generating reports.
    • Added DL-LinkInfo command to Eco and Discord for showing information about account linking.
    • Added support for referencing players by ID in message commands.
    • Added buy/sell limits to Eco trades command.
    • Added sorting of eco trade command output lines based on entry status.
    • Added support for searching for specific stores with the trades command.
    • Fixed barter stores causing exceptions in the trades command.
    • Fixed Discord trades command duplicating the name of the matched item.
    • Fixed DiscordLink trades command not always finding store entries for tools.
    • Fixed BroadvastInvite commands erronously asking for a channel name parameter.
    • Fixed invite link token config being case sensitive.
    • Fixed failing command executions that fail due to being in the wrong channel reporting IDs instead of channel names if the config uses IDs.
    • Fixed capitalization of default admin command roles so that they display properly in Discord command execution failure messages.
    • Fixed it not being possible to execute some commands from Discord DMs.
    • Renamed Reset command => ResetWorldData.

    --- Miscellaneous Improvements ---

    • Added server GUI dropdown options for config verification, permissions verification and plugin restart.
    • Added console text coloring.
    • Added configurable automatic enabling/disabling of the standard embed footer based on embed size.
    • Added config variable UseVerboseDisplay for controlling if the server GUI display output should be verbose.
    • Fixed plugin restarts not being allowed if the bot token was not set up.
    • Shortened time annotations to a single character in order to keep them on one line in embeds.
    • Made channel links print the actual channel name instead of ID if the link is valid.
  • Version 2.2.3

    Added EM-Framwork 3.1.0 compatibility.

  • Version 2.2.2

    Tested for Eco 9.4.0

    --- Additions ---

    * Added support for Eco 9.4

    * Added colored logging printouts.

    * Added Elixir Mods versioning system.

    --- Bugfixes & Improvements ---

    * Moved PluginLog to the logs subdirectory.

  • Version 2.2.1

    Tested for Eco 9.2.4

    If you're updating from a previous version, make sure that you only have one version of "em-framework.dll".

    It has been moved from "Mods/" to "Mods/Elixir Mods".

    --- Bugfixes & Improvements ---

    • Fixed a crash that would occur if snippets with duplicate keys were added.
    • Fixed Restart command not working.
    • Fixed linked users sometimes getting lost when the server was restarted or a new link was added.
    • Fixed missing newline in the Server GUI Display.
    • Clarified text in the embed footer.
    • Moved em-framework.dll to "Mods/Elixir Mods".
    • Updated em-framework.dll to version 2.2.1.
  • Version 2.2.0

    Tested for Eco 9.2.4

    If you are updating from an earlier version, make sure to read the Config Changes and Notes sections!

    --- Additions ---

    * Added Eco <==> Discord account linking.

    * Added Crafting Feed.

    * Added Currency Display.

    * Added Trade Tracker Display.

    * Added active election information to the Server Info Display.

    * Added law information to the Server Info Display.

    * Added info about attachments in Discord messages being forwarded to Eco.

    * Added footer with meta data for Display messages.

    * Added optional "logged in time" Display for users in the Player List Display.

    * Added configurable list of Discord roles that DiscordLink should consider admins.

    * Added Discord Command Channels

    - If one or more Discord Command Channels are configured, the bot will only listen for user commands in these channels.

    Admin users will override this rule.

    * Added user command "Trades <UserOrItemName>" to Eco.

    - Works like the ?trades command in Discord, but displays the information in Eco.

    * Added admin command "ResetWorldData" to Eco and Discord.

    - Deletes all data stored in the WorldData.JSON file. This command does the same data cleanup in DiscordLink as when a new world is created.

    * Added admin command "SendAnnouncement <Title> <Message> <Player>" to Eco and Discord

    - Sends an announcement message box to the target user.

    * Added admin command "BroadcastAnnouncement <Title> <Message>" to Eco and Discord

    - Sends an announcement message box to all online users.

    * Added admin command "SendPopup <Message> <Player>" to Eco and Discord

    - Sends a popup message to the target user.

    * Added admin command "BroadcastPopup <Message>" to Eco and Discord

    - Sends a popup message to all online users.

    * Added admin command "SendServerMessage <Message> <Player>" to Eco and Discord

    - Sends a server message to the target user.

    * Added admin command "BroadcastServerMessage <Message>" to Eco and Discord

    - Sends a server message to all online users.

    * Added admin commands "PluginStatus" and "PluginStatusVerbose" to Eco and Discord.

    - Prints data about the state of the running DiscordLink instance.

    --- Bugfixes & Improvements ---

    * Fixed a crash that would occur if a command for sending server messages was sent via DM to the bot.

    * Fixed a crash that would occur if a user send a DM to the bot while Snippet input was enabled.

    * Fixed a crash that could occur if logging was used from multiple threads simultaniously.

    * Fixed a crash that could occur if a work party reward was not associated to a work party (Eco bug?)

    * Fixed the echo command failing to actually echo the command back in a chat link channel.

    * Fixed the echo command using the [echo] tag instead of the command token in an error message.

    * Fixed commands not being executed if sent in a DM to the bot.

    * Fixed logs being written to the wrong path on Linux.

    * Fixed Work Party Display using an excessive amount of decimals in reward descriptions.

    * Fixed the Invite command not providing feedback when executed from Eco.

    * Fixed the Election Display not respecting anonymous voting.

    * Fixed several issues with bartering stores and trade related functionality of DiscordLink.

    * Fixed several instances where tags weren't stripped when sending Eco data to Discord.

    * Added log printout for when the "Restart" command is executed.

    * Added the plugin version to the "About" command.

    * Added port number to Server Info Display Connection Info.

    * Added aliases "trade" and "dlt" to the Trades command.

    * Changed Trade Feed to use the store name instead of store owner name.

    * Changed the ServerStatus Discord command alias from "dl-status" to "dl-ecostatus".

    * Changed "Time Since Start" to "Current Time" in Server Info Display.

    - This change was made in order to be consistent with ingame time counting. This means that time counting now starts at Day 1 instead of "0 days elapsed".

    * Server log will not warn if features requiring Discord Guild Members intent are used without the intent being enabled for the bot.

    - The Discord Guild Members intent is currently needed only for linking Discord accounts to server users.

    * Improved readability of Eco forwarded messages in Discord.

    * Improved the accuracy of the Player List Display.

    * Player Lists in Server Info and Player List displays are now sorted alphabetically.

    * Modules will no longer run if there are no valid targets for them to post messages in.

    - This improves stability and allows server owners to turn off features that cause issues when the server is updated with breaking changes to DiscordLink.

    * Renamed "Server Address" in Server Info Display to "Connection Info".

    * Messages and embeds that exceed the allowed size in Discord will now be split up and sent as multiple messages.

    - This is not yet supported for Displays.

    * Reversed the order to buy and sell orders in Discord trades command output.

    - This change was made in order to be consistent with the ingame dl-trades command.

    --- Config Changes ---

    - "EcoCommandChannel" has been renamed "EcoCommandOutputChannel".

    - "UseAddress" field in Server Info has been renamed "UseConnectionInfo".

    - "UseStartTime" field in Server Info has been renamed "UseCurrentTime".

    --- Notes ---

    * All data files have been moved to /Configs/Mods/DiscordLink.

    - Previous versions of DiscordLink only stored logs in the mods directory.

    As some server hosts now expect mods to only have DLL files under the mod directory, I would recommend that you delete your previous DiscordLink folder from /Mods and create a new one using this version.

    Your config will remain intact as it is located under /Configs.

    * Any Discord users with the roles "admin", "administrator" or "moderator" will by default have access to admin level Discord commands.

    * Added dependency System.Threading.Timer.

    * Updated em-framework to version 2.1.2.

    - This fixes the issue with admin commands not being logged properly.

    * Updated DSharpPlus to version 4.0.0-rc1.

    --- Known Issues ---

    * Display messages over the message length cap will not handle message splitting properly.


  • Version 2.1.1

    Target Eco Server Version:

    --- Bugfixes & Improvements ---

    • Fixed election display that got broken in the Eco 9.1 update.
    • Fixed potential crash on plugin log writing.
    • Fixed link validation not being executed for Snippet channels.
    • Fixed bot name erroneously defaulting to bot token.
    • Fixed issue where the bot user would not be created if the not name was not configured.
    • Toned down some of the logging that the user generally can't do anything about.
  • Version 2.1.0

    --- Additions ---

    * Added Discord Snippet Input feature.

    - This feature allows you to define messages in Discord that can be posted into Eco using the /Snippet command.

    - More information at: https://github.com/Eco-Discord…egrationTypes.md#snippets

    * Added Work Party Display feature.

    - This feature lets you view active work parties in Discord.

    - More information at: https://github.com/Eco-Discord…tionTypes.md#work-parties

    * Added Election Display feature.

    - This feature lets you view active elections in Discord.

    - More information at: https://github.com/Eco-Discord…grationTypes.md#elections

    * Added parent Eco command "DiscordLink".

    - All DiscordLink Eco commands are now subcommands to the DiscordLink command.

    * Added Eco and Discord "About" command.

    - This command prints a text describing what DiscordLink is and links to the documentation.

    * Added Discord "Print" command.

    - This command echoes the inputted string.

    - This command is useful for making the bot output Display tags in the order you wish them to have them in a channel.

    * Added Eco and Discord "Restart" command.

    - This command restarts the plugin.

    - Resources that are only read on server restart (such as DLL files) will not be updated.

    * Added Rules for allowing/disallowing mentions of @everyone and @here.

    - Can be configured per Chat Link.

    * Added configuration field for the Eco bot user name.

    - Requires world reset to take effect.

    * Added options to Chat Links for selecting which direction(s) messages should be forwarded.

    - Options: EcoToDiscord, DiscordToEco, Duplex.

    * Added file logging for all non-verbose log messages.

    - The output file is at "Mods/DiscordLink/Pluginlog.txt"

    * Replaced the debug flag with a configurable log level.

    - Typically, only the plugin log level should be used while the backend one is for troubleshooting.

    * Replaced EcoStatus Display with Server Info Display.

    - This one is more or less the same as EcoStatus, but will hopefully cerate less confusion with the ?EcoStatus command.

    * Moved Player List out from the Server Info Display and into a separate Player List Display.

    --- Bugfixes & Improvements ---

    * Reduced the amount of redundant outputs of config verification when the config is edited via the server GUI.

    * Eco Channel names will now automatically trim any '#' characters at the start of the name.

    * Chat log will now create any missing directory in the given path.

    * Added aliases to many commands in both Eco and Discord.

    * Restructured config to split channel links into Displays, Feeds and Inputs.

    * Fixed Server Info display outputting Eco tags when fetching the Title or Description from Network.Eco.

    * Fixed config verification reporting "All channels verified" when there were zero channel links configured.

    --- Notes ---

    * This update makes extensive changes to the config. In order to avoid configuration erros, it is recommended that you recreate your config file.

    * Two more dependencies have been added.

    - Microsoft.Extensions.Logging.Abstractions: DSharp dependency with a higher version than the one Eco uses.

    - Nito: Used for improved async handling.

  • Version 2.0.1


    Patch notes:

    --- Bugfixes & Improvements ---

    • Fixed a rare crash that could occur if the Eco Status display was enabled and the Eco server stalled for an extended period of time.


    NOTE: This plugin version is not compatible with any Eco server version below 0.9.0.

    Patch notes:

    --- Additions ---

    • Support for Eco 9.0
      • WOHO!
    • Configuration Verification

      Upon startup and configuration changes, DiscordLink will now process your configuration to look for errors.

      The verification runs in two steps, one at the server start and one after all information from Discord has been received.

      Any detected errors will be sent to the server log and errors that can be fixed automatically will be resolved.

      The status of each channel link will be displayed at the end of the full verification pass.

      Configuration verification is also triggered by configuration changes made while the server is running.
    • DiscordInvite Command

      A new command for both Eco and Discord that displays a cofigurable message containing the invite link to the Discord server.

      Note that this command requires the Discord Address parameter from the Eco Network config to be set.
    • Discord mention/tagging support

      Use @NameOrRole or #ChannelName in Eco to tag users, roles or channels in Discord.

      Usage of the various types of mentions can be allowed or disallowed per channel link.
    • Live Eco Server Status Display

      A live updated and configurable display of the ?EcoStatus output can now be housed in a Discord channel.
    • Chatlog

      A chatlog that stores all messages sent in the linked channels.

      This feature is off by default and the path of the chatlog is configurable.

    --- Bugfixes & improvements ---

    • Fixed messages from Eco sometimes not being sent to Discord.
    • Discord guild(server) and channel names are no longer case sensitive.

    --- Notes ---

    • Changed Config Name

      The config name has changed to "DiscordLink.eco".

      This means that your current config file will no longer be recognized.

      As the content of the config file has changed to some extent, we recommend that you do not simply rename your existing configuration file, but rather fill out the new one.
    • Multiple DLLs

      DiscordLink has previously been distributed as a single .dll file.

      Due to underlying changes, we will now also distrubute the .dll files of our dependencies. DSharpPlus.dll and DSharplus.CommandsNext.dll should simply be left in the same folder as DiscordLink.dll

    --- Known Issues ---

    • The Live Server Status feature may cause crashes if other messages already exist in the Discord channel when the plugin starts

    • The description of EcoStatus in the server GUI claims that messages will get deleted. This is outdated information. DiscordLink never deletes any messages.
    • Chatlog will sometimes fail to write.

  • Hello,
    as already mentioned its a greate mod.
    I figured out, if I send the bot a direct message, I get following Exception on the server:

    I tried ?ecostatus

    [03:21:21] [DiscordLink] ERROR: Error occurred while attempting to run that command. Error message: System.NullReferenceException: Object reference not set to an instance of an object.

    at Eco.Plugins.DiscordLink.Utilities.DiscordUtil.ChannelHasPermission(DiscordChannel channel, Permissions permission)

    at Eco.Plugins.DiscordLink.DiscordCommands.RespondToCommand(CommandContext ctx, String textContent, DiscordEmbed embedContent)

    on eco 8.x it was possible to have private chat with the bot, since update 9.x its not working any more. maybe/hopefully it is easy to fix. :D

    • Hey, sorry for the late reply.
      DiscordLink 2.2.0 should be coming out soon as it's in testing now.
      That version has this issue fixed :)

    • Hello, this log excerpt alone does not give enough context to figure out what's causing your problem.

      Please explain what issue you are having and in what context it appeared.
      A full log printout and your obfuscated config file would also be very helpful.

      Thank you :)

    • Ive installed and set everything up but nothing is working, The commands are not recognized in game and the messages from discord dont send to the game.

    • Could you send me your logs and your config? (just remove the bot token from the config file)
      I could help you get it working :)