Skip to content
This repository has been archived by the owner on Jan 8, 2023. It is now read-only.

Commit

Permalink
Added bot support
Browse files Browse the repository at this point in the history
  • Loading branch information
xackery committed Feb 12, 2018
1 parent de2a850 commit 7eee672
Show file tree
Hide file tree
Showing 3 changed files with 64 additions and 40 deletions.
78 changes: 40 additions & 38 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,47 +1,54 @@
# discordeq
# DiscordEQ
This plugin allows Everquest to communicate with Discord in a bidirectional manner.

##How to install

### Note for previous versions
* If you were running a previous version of DiscordEQ, you can now remove the quest file that I had you create, it is no longer needed!

###Set up eqemu_config.xml
* Add to eqemu_config.xml these lines:
```xml
<!-- Discord Configuration -->
<discord>
<username>YourDiscordUsername</username>
<password>YourDiscordPassword</password>
<telnetusername>YourTelnetAccountLSNAme</telnetusername>
<telnetpassword>YourTelnetPassword</telnetpassword>
<serverid>ServerIDFromDiscord</serverid>
<channelid>ChannelIDFromDiscord</channelid>
<refreshrate>5</refreshrate>
<itemurl>http://yourallaclone.com/alla/?a=item&amp;id=</itemurl>
</discord>
##How to Configure

###Edit eqemu_config
* Add to eqemu_config.json these lines under the server {} section:
```json
"discord" : {
"channelid" : "{CHANNELID}",
"itemurl" : "{ITEMURL}",
"refreshrate" : "15",
"clientid": "{CLIENTID}",
"serverid" : "{SERVERID}",
"username" : "{YOURTOKEN}",
"commandchannelid": "{YOURCOMMANDCHANNELID}"
},
```
* each section above with {WORD} sections will be populated with data as you follow below steps.

###Prepare App/Bot in Discord
* Go to https://discordapp.com/developers/
* Click My Apps on the top left area.
* Click + New App
* Write anything you wish for the app name, click Create App
* Copy the clientid into your discord into the {CHANNELID} field in eqemu_config
* Scroll down to the bot section, and click Create Bot User
* Confirm with Yes, Do it!
* Make sure Public Bot is unchecked, as well as oauth2 grant.
* Save, click to reveal the token. Copy the bot token into your {YOURTOKEN} field in eqemu_config, under username

###Prepare server, channel IDs
* Inside Discord, right click your server's circular icon and on the bottom choose Copy ID.
* Paste the serverID into your eqemu_config's {SERVERID} field
* Create a new channel for OOC chat. Right click the channels' name and copy ID.
* Paste the channelID into your eqemu_config's {CHANNELID} field

### Prepare itemURL (optional)
* If you have a website that has item links, replace the {ITEMURL} field with the website, e.g. "http://yoursite.com/item.php?id=". It is assumed your item id's are appended to the end of the url link.
* If you don't have a website with itemlinks, remove the {ITEMURL} entry all together and keep it empty. Discord will italics itemlinks in game when displayed on Discord then.

###Set ServerID and ChannelID
* Click the sprocket on the bottom left area to go into user settings.
* Inside User Settings Pop up, go to the Appearance tab on left.
* Inside the Appearance tab, Enable on the Developer Mode option
* Hit done to exit the user settings pop up.
* Inside Discord, create a channel called #ooc (or another name, whichever you prefer)
* Right click the channel's name, and choose the copy link option. When you paste it, you'll get a number that represents a channelid noted above.
* Right click the server's name, and copy link. When you paste it, you'll get a number that represents serverid noted above.

###Set ItemURL
* this is optional, if you leave the itemurl field blank (or remove it), it will default to showing item links in italics in chat, e.g. *Arrow* when someone itemlinks an Arrow.

###Enable Telnet
* Look through eqemu_config and you will find an option for telnet="enabled".

###Set a telnet account password
* Go to your Accounts table on the DB, and set a password for one of your GM accounts. You can manually enter a password in there, plain text, and copy/paste it into the <telnetpassword> field in your eqemu_config.xml.

###Run Discord.
* Run discordeq from the same directory that eqemu_config.xml exists. If any settings are incorrect, you will be prompted on what is incorrect and how to fix it.
###Run DiscordEQ
* Your first run should fail with an unauthorized notification, since you have not given your bot permissions to your server yet. You will see a link on the bottom you can copy paste into a browser, and give it permission to access your server.


###Enabling Players to talk from Discord to EQ
* Admin-level accounts can only do the following steps.
Expand All @@ -53,8 +60,3 @@ This plugin allows Everquest to communicate with Discord in a bidirectional mann
### (Optional) Extend Telnet Timeout
* By default, telnet's timeout is 10 minutes. You can update it's timeout to a longer duration by setting the rule Console:SessionTimeOut to a higher value.


## How to Compile from Source.
* This repository uses [govendor](https://github.com/kardianos/govendor).
* Build and install govendor, and inside the discordeq directory once pulled, type `govendor sync` (Note: Your $PATH needs to point to your go/bin path to use the goevndor binary).
* This ensures you keep versions of packages locked in properly.
9 changes: 8 additions & 1 deletion build.sh
Original file line number Diff line number Diff line change
@@ -1,17 +1,24 @@
set -e
export VERSION="0.49"
export VERSION="0.50"
export NAME="discordeq"
echo "Preparing discordeq v${VERSION}"
rm -rf bin/*
echo "Building Linux"
echo "x64"
GOOS=linux GOARCH=amd64 go build main.go
mv main bin/$NAME-$VERSION-linux-x64
echo "x86"
GOOS=linux GOARCH=386 go build main.go
mv main bin/$NAME-$VERSION-linux-x86
echo "Building Windows"
echo "x64"
GOOS=windows GOARCH=amd64 go build main.go
mv main.exe bin/$NAME-$VERSION-windows-x64.exe
echo "x86"
GOOS=windows GOARCH=386 go build main.go
mv main.exe bin/$NAME-$VERSION-windows-x86.exe
echo "Building OSX"
echo "x64"
GOOS=darwin GOARCH=amd64 go build main.go
mv main bin/$NAME-$VERSION-osx-x64
echo "Completed."
17 changes: 16 additions & 1 deletion main.go
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,13 @@ func startService() {
os.Exit(1)
}

if config.Discord.Password == "" && config.Discord.ClientID == "" {
applog.Error.Println("I don't see a password set in your discord > password section of eqemu_config, as well as no client id, please adjust.")
fmt.Println("press a key then enter to exit.")
fmt.Scan(&option)
os.Exit(1)
}

if config.Discord.ServerID == "" {
applog.Error.Println("I don't see a serverid set in your discord > serverid section of eqemuconfig, please adjust.")
fmt.Println("press a key then enter to exit.")
Expand Down Expand Up @@ -87,8 +94,16 @@ func isNewTelnetConfig(config *eqemuconfig.Config) bool {

func listenToDiscord(config *eqemuconfig.Config, disco *discord.Discord) (err error) {
for {
applog.Info.Println("[Discord] Connecting as", config.Discord.Username, "...")
if len(config.Discord.Password) > 0 { //don't show username if it's token based
applog.Info.Println("[Discord] Connecting as", config.Discord.Username, "...")
} else {
applog.Info.Println("[Discord] Connecting...")
}
if err = listener.ListenToDiscord(config, disco); err != nil {
if strings.Contains(err.Error(), "Unauthorized") {
applog.Info.Printf("Your bot is not authorized to access this server.\nClick this link and give the bot access: https://discordapp.com/oauth2/authorize?&client_id=%s&scope=bot&permissions=0", config.Discord.ClientID)
return
}
applog.Error.Println("[Discord] Disconnected with error:", err.Error())
}

Expand Down

0 comments on commit 7eee672

Please sign in to comment.