Originally a Discord bot for alerting of new Legendary drops in a World of Warcraft Guild, it became a fully pledged bot offering multiple features:
- Lookup an item/Achievement (!lookupitem !lookupachievement)
- Mythic+ affix displayer (!affix)
- Get a player's PVE progression/Mythic+ Rank/iLVL/etc. (!lookup)
- Get the current status of the buildings on Broken Shore (!legionbuilding)
- Say if an invasion is on Broken Shore (!invasion)
- Check if someone in the guild looted a new Legendary (!enablelc !disablelc !mutelc)
- Give the latest log of the guild on WarcraftLogs (!log)
- Play some music in a voice channel! (!playmusic !stopmusic !skipsong !addsong)
- Give the Competitive rank of a player in Overwatch (!owrank)
- Show the current status of a Warcraft Realm (!server)
- Give the current price of the WoW token (!token)
- Give the latest tweet of the @blizzardcs Twitter account of your region (!blizzardcs)
- Manage a streamer list on your server (!addstreamer !removestreamer !streamers). Supports Twitch & Mixer.
- Sync your World of Warcraft Guild rank to your Discord server. (!setwowrank !syncguild and more)
- Have custom commands for your server (!createcmd !removecmd !listcommands)
- Search gifs (!gif)
Initial Bot configuration
To be able to work properly, the bot needs some information from you. Use the !setup command to configure the bot.
Legendarybot have several Admin commands. To be able to run those admin commands, you need one of the following conditions:
- You are Owner of the Discord server.
- You need the Admin role on your server.
- You need the
Without one of those conditions, you are only allowed public commands.
The default bot prefix is !. You can change it to whatever you want with the
How to compile
To compile Legendarybot, simply have JDK 9 & Maven installed and run the following command at the root of the project
.\gradlew clean assemble installDist copyFiles
This will create a folder called
dist that will include the bot and all plugins
How to run
To run the bot, it requires some basic configuration
- You need a MongoDB server.
- You need a ElasticSearch server for the search capabilities of the bot (Realm finding, items, achivements, etc.).
- You need a Discord bot token. You need to create one here: https://discordapp.com/developers/applications/me
- You need a Battle.net API key. You can create one here: https://dev.battle.net/
- Optional: A Twitter API key for the !blizzardcs command. You can create one here: https://apps.twitter.com/
- Optional: A WarcraftLogs API key for the !logs command. You can find yours here: https://www.warcraftlogs.com/accounts/changeuser
- Optional: A Twitch API Key for the !streamers command. You can create an application here: https://dev.twitch.tv/dashboard/apps
Create a app.properties file at the root of the bot folder, the following needs to be added:
mongodb.server=localhost #MongoDB server address mongodb.port=27017 #MongoDB server port mongodb.database=legendarybot #MongoDB server port. mongodb.username= #Optional: MongoDB username mongodb.password= #Optional: MongoDB password mongodb.ssl=False #Optional: True if you want to connect with SSL, False if not bot.token= #Discord bot token battlenet.us.key= #Battle.net API Key battlenet.us.secret= #Battle.net API Secret battlenet.eu.key= #Optional: Battle.net EU API key. battlenet.eu.key= #Optional: Battle.net EU API secret. elasticsearch.address=localhost #ElasticSearch server address elasticsearch.port=9200 #ElasticSearch server port elasticsearch.scheme=http #ElasticSearch scheme. By default http. battlenetoauth.key= #Battle.net API key that will be used for the !linkwowchars command. Can be the same as your other battle.net key. battlenetoauth.secret= #Battle.net API Secret that will be used for the !linkwowchars command. Can be the same as your other battle.net key. warcraftlogs.key= #WarcraftLogs API Key for the !logs command to work. twitter.key= #Twitter API key to have the !blizzardcs command work. twritter.secret= #Twitter API Secret to have the !blizzardcs command work. sentry.key = #Optional: The bot have Sentry.io integration. If you wish to upload the stacktraces to the Sentry.io platform enter your key here bot.shard= #Optional: The number of shards the bot will have on Discord. Only recommended to put it if over 800 discord servers use the bot. twitch.key = #Twitch API key to query if a stream is online or not for the !streamers command.
You are now ready to start the bot, start it with the following command while being in the LegendaryBot folder:
Loading the ElasticSearch database with data
Several features of the bot use the ElasticSearch server to query for data like realm name, items, etc. By default it is empty. For now, you can download the backup of the live database here. To import it in ElasticSearch, download elasticdump and use the following command:
elasticdump --input backup.json --output=http://localhost:9200/wow
In the future the database will be populated on the first run of the bot.
It looks hard! Can you run it for me?
Of course! You can add the bot to your server. Simply click here.
I need support, how can I reach you?
I wish LegendaryBot spoke my language!
LegendaryBot support multiple languages. To see if the bot supports it, check the
The language you want is missing or you saw a mistake? You are in luck! You can contribute to the Crowdin Project and your language will be available to use by everybody once it get's added to bot files.