AscensionChat is a Discord integrated chat bot for Project Ascension that allows users to easily communicate between Discord and Ascension WoW.
Note
AscensionChat does NOT support WoW Classic or Retail servers.
Currently supported versions are:
- Vanilla
- The Burning Crusade
- Wrath of the Lich King
- Cataclysm (4.3.4 build 15595)
- Mists of Pandaria (5.4.8 build 18414)
Some servers have their own modifications which deviate from the original client implementation. For those, consider these dedicated forks which add the custom features of those servers:
- Ascension: https://github.com/Szyler/AscensionChat
- Turtle WoW: https://github.com/Zebouski/WoWChat-Turtle
- Clientless: Does not need the WoW Client to be open to run
- Seamless Chat Integration: Integrates channels between WoW and Discord
- Guild chat, Officer chat, Local chat, Emotes, Custom Channels (Local chat, Emotes, and Custom Channels are disabled by default)
- In-game links (items, spells, etc.) are displayed as links to the Ascension Database (db.ascension.gg)
- Customisable message format
- Smart Tagging:
- Tag players on Discord from WoW using
@and_part_or_all_of_their_name - Tag
@here,@everyone, and"@Even Roles With Spaces"(include quotes around them)
- Tag players on Discord from WoW using
- Custom Commands:
- Check who is online in your guild with
?whoor?online(also displays level and current area) - Get the stored Guild Message of the Day with
?gmotd - Invite a player to your guild with
?ginvite,?inviteor?invfollowed by their character name (character bot uses must have Guild Invite perms) - Kick a player from your guild with
?gkickfollowed by their character name (character bot uses must have Guild Kick perms) - Promote a player in your guild with
?gpromoteor?promotefollowed by their character name (character bot uses must have Guild Promote perms) - Demote a player in your guild with
?gdemoteor?demotefollowed by their character name (character bot uses must have Guild Demote perms) - Set the Guild Message of the Day with
?setgmotd,?setmotd,?gmotdsetor?motdsetfollowed by what you want to set as the GMotD (character bot uses must have Set Guild Message perms)- If no message is included after these setmotd commands, the GMotD will be CLEARED. Max length 127 characters
- Check who is online in your guild with
- Highly Portable:
- Runs as a Java program and works on Windows, Mac, and Linux
The bot uses Discord's API to log into your Discord server. It then uses supplied information to log into Ascension as a WoW character. Once it logs into WoW and sees the configured channels, it relays messages to your Discord and WoW channels respectively.
Note
Do not use this bot on an account with existing characters!
- Even though this bot does not do anything malicious, some servers may not like a bot connecting, and GMs may ban the account! Make a new account just for the bot. YOU HAVE BEEN WARNED!
(Click) Guild Chat
The bot will send the GMOTD when it first starts (if gmotd enabled).It will also inform you if you are trying to use a command in the wrong channel (?gkick/?ginvite).
(Click) Sending Officer Commands
The message from these commands (eg, player has been kicked) will go to guildchat-relay channel. (See picture above)
(Click) Hyperlinks have been fixed!
You can now click items/achievements that players link, which will send you straight to the db.ascension.gg information for it
-
Create a Discord Bot on your Discord account:
- Go to https://discordapp.com/developers/applications/
- Sign into your Discord account if necessary, and click
Create an application - Change the application name to something meaningful like "WoW Chat"
- On the left, click the
Bottab - Add a Bot
- Disable the
Public Botoption
Important
2. Enable PRESENCE INTENT, SERVER MEMBERS INTENT and MESSAGE CONTENT INTENT under Privileged Gateway Intents.
Without these, your bot will not work!
- Invite your bot to Discord:
- Open a new browser tab/window and paste: https://discordapp.com/oauth2/authorize?client_id=YOUR_CLIENT_ID&scope=bot (you could do this in notepad if you want)
- Don't press enter yet!
- In a different tab, go back to the
OAuth2page of your new bot/application - Copy the
Client ID - Replace
YOUR_CLIENT_IDin the URL above with theClient IDyou just copied - Assign the bot the necessary roles/permissions in your Discord Server for it to view/enter your desired channels
- Open a new browser tab/window and paste: https://discordapp.com/oauth2/authorize?client_id=YOUR_CLIENT_ID&scope=bot (you could do this in notepad if you want)
- Discord section:
token: Enter your bot'sTOKENfrom theBottab of the Discord Developer Portal. This is what AscensionChat will use to login to Discord.- (Can't see
Copy? ClickReset TokenthenCopy) enable_dot_commands: If set to1, it will not format outgoing messages starting with., enabling you to send things like.s into the server directly. If set to0, it will format these messages like regular messages.dot_commands_whitelist: If empty, it will allow or disallow dot commands based on theenable_dot_commandssetting above. If any command is listed here, the bot will ONLY allow those specific commands to be sent in-game.enable_invite_command: If set to1, it will allow the use of?invite charnameanywhere?whois allowed. If set to0, it disables the command.banned_invite_list: A list of character names that cannot be used with?inviteenable_commands_channels: A list of channels for which to allow commands. If not specified or empty, the bot will allow commands from all channels.
- WoW section:
platform: Leave asMacunless your target server has Warden (anticheat) disabled AND it is blocking/has disabled Mac logins. In this case, putWindows.- NOTE: For Ascension, I cannot get past character selection if
Macis set on MacOS. Havingplatform=Windowsseems to work without issue.
- NOTE: For Ascension, I cannot get past character selection if
locale: Optionally specify a locale if you want to join locale-specific global channels. enUS is the default locale.enable_server_motd: Set to0to ignore sending the server's MotD. Set to1to send the server's MotD as a SYSTEM message.version: put either1.12.1,2.4.3,3.3.5,4.3.4, or5.4.8based on the server's expansion.build: you can include abuild=<build number>setting in the config, if you are using a custom build version on your server.- Optionally you can also use realm_build and game_build options if the number used is different for each server. See fjaros#90
realmlist: this is server's realmlist, same as in yourrealmlist.wtffile.- Example values are
logon.lightshope.orgorwow.gamer-district.org
- Example values are
realm: This is the realm name the Bot will connect to.account: ReplaceREPLACE-MEwith the bot's Ascension account name.password: ReplaceREPLACE-MEwith the bot's WoW Ascension password.character: ReplaceREPLACE-MEwith the bot's character name, as it is shown in the character list.
- Guild section:
- This section sets up guild notifications on Discord.
- For each notification—
online,offline,joined,left,motd,achievement—specify:enabled:0to not display in Discord,1to display in Discordformat: How should the message be displayed?channel: Enter theChannel nameORIDof where you want the message displayed, instead of the defaultguildchat-relaychannel.
- Chat section:
- This section sets up the channel relays between Discord and Ascension. You can have an unlimited number of channel relays.
direction: How do you want to relay each channel? Put:wow_to_discord,discord_to_wow, orboth.- wow section:
- In
type, put one of:Say,Guild,Officer,Emote,Yell,System,Whisper,Channel. This is the type of chat the Bot will read for this section.- If you put
type=Channel, you must also provide achannel=yourChannelNamevalue.
- If you put
- In
format, put how you want to display the message. Supported replaceable values are%time,%user,%message, and%channelif the abovetypeisChannel. filters: See filters section. If a channel configuration has this section, it will override the global filters and use these instead for this channel.- If this is in the
wowsection, it will filterDiscord->WoWmessages.
- If this is in the
- Optionally in
id, specify thechannel IDif your server has a non-standard global channel.
- In
- Discord section:
channel: The Discord channel name OR ID where to display the message. It is advised to use the channel ID here instead of the name, so the bot does not stop working when the channel name is changed.- To see channels' IDs, you must enable Developer mode in Discord under User Settings -> Appearance -> Advanced.
format: Same options as in the wow section above.filters: See filters section. If a channel configuration has this section, it will override the global filters and use these instead for this channel.- If this is in the
discordsection, it will filterWoW->Discordmessages.
- If this is in the
- Filters section:
- This section specifies filters for chat messages to be ignored by the bot. It works for both directions: Discord to WoW and WoW to Discord. It can be overridden in each specific channel configuration as stated above.
enabled:0to globally disable all filters,1to enable them.patterns: List of Java Regex match patterns. If the incoming message matches any one of the patterns and filters are enabled, it will be ignored.- When ignored, the message will not be relayed; however, it will be logged into the bot's command line output prepended with the word FILTERED.
-
Download and unzip the latest zip file from the GitHub releases
-
Make sure you have a Java Runtime Environment (JRE) 1.8 or higher installed on your system!
(click) Check the version of your Java installation with:
java -version
-
- Windows: Configure
ascensionchat.confand runrun.bat - Mac/Linux: Configure
ascensionchat.confand runrun.sh
Note
Before updating ascensionchat.conf, save a copy of your current ascensionchat.conf file. This will allow you to easily transfer your login details and any custom formatting to the new config, making the update process smoother.
Download the latest ascensionchat.jar and replace the one in your current ascensionchat folder.
- Alternatively, download the latest
ascensionchat.zipfile; but be careful not to replace yourascensionchat.conf!
- WoWChat/AscensionChat is written in Scala and compiles to a Java executable using Maven.
- It requires Java JDK 21, Maven and Scala 2.12.20 for Ascensionchat 3.3.0+ or Scala 2.12.19 for AscensionChat <-3.2.2
- Run
mvn clean packagewhich will produce a file in the/targetfolder calledascensionchat-*.zip - Run
unzip ascensionchat-*.zip, edit the configuration file, and executerun.batfor Windows orrun.shfor Linux/MacOS. (Edit the name of the config file inrun.*if you supply your own config with a different name)- If no config file is supplied, the bot will try to use
ascensionchat.conf
- If no config file is supplied, the bot will try to use
This project has been manually compiled and run on the following Operating Systems (bare-metal, no VM's/Containers unless otherwise stated)
-
🍎 MacOS
- MacOS Ventura 13.7 (13" Early '15 MacBook Air, Intel, OpenCore Legacy Patcher)
- SDKMAN! one-line install from their site (MacOS/Linux only)
- Scala (2.12.20) installed with SDKMAN!
-
🐧 Linux
-
🏁 Windows
- Windows 10 Pro (22H2, 19045.4529)
- You will want to use
Windows Terminal(which you might not have by default), because the defaultWindows Console Hostdoes not support the ANSI Escape Sequences used in this project. This results in the Escape Codes showing in the terminal and no colour, making terminal output harder to read. Fortunately, this is pretty straightforward to setup. See HERE for steps to setup/install.
- You will want to use
- Windows 11 Pro (23H2, 22631.3737)
- WSL - Ubuntu 22.04 (on Win11-Pro)
- Windows 10 Pro (22H2, 19045.4529)
-
ARM64
- Pixel 7 Pro (Android 14, Standard Pixel OS, 5.10.198-android13-4)
- Ubuntu noble 24.04 aarch64 (Virtualised Cortex-A57*4 on Proxmox 8.2.7, Linux 6.8.0-45-generic)
Thank you to the following people/projects for helping make this project possible

