Coder Social home page Coder Social logo

jamesives / discord-wow-armory-bot Goto Github PK

View Code? Open in Web Editor NEW
33.0 4.0 24.0 2.92 MB

⚔️🗡️ World of Warcraft bot for Discord which checks a characters item level, notable achievements and pve/pvp progression and posts it in the chat.

Home Page: https://jamesiv.es/python/2017/07/18/discord-wow-bot

License: MIT License

Python 100.00%
discord discord-bot python3 world-of-warcraft wow blizzard-api blizzard

discord-wow-armory-bot's Introduction

World of Warcraft Armory Discord Bot ⚔️🗡️

Battle for Azeroth is the final expansion this bot supports, and 4.0.6 is the last release. This bot was not created by Blizzard.

With this bot you're able to lookup a World of Warcraft character's item level, notable achievements, and pve/pvp progression with a command within Discord.

Installation Steps 💽

  1. Visit the Blizzard API website and sign up for an API client id/secret.
  2. Visit the Discord API website and create an application. You'll need to create a bot user and retrieve the bot token it provides.
  3. Invite the bot user to your server using the following URL by replacing the YOUR_CLIENT_ID portion with the one found within your Discord API settings: https://discordapp.com/oauth2/authorize?&client_id=YOUR_CLIENT_ID_HERE&scope=bot&permissions=0
  4. Click the button below and enter the required fields to deploy the bot to Heroku. If the required tokens were provided correctly the bot should appear online within Discord and begin responding to commands.

Deploy


If you'd like to run the application outside of Heroku you can add the required configuration options as environment variables and then run the following commands using Python and Pip.

# Install & Run
$ pip install -r requirements.txt
$ python app.py

# Tests
$ python tests.py

Configuration 📁

The installation will require you to enter a number of API keys and settings as environment variables. Below you'll find an explanation of each.

Key Value Information Required
WOW_CLIENT_ID Required to make calls to the Blizzard API, you can sign up for a client id here. Yes
WOW_CLIENT_SECRET Required to make calls to the Blizzard API, you can sign up for a client secret here. Yes
WOW_REGION The server region you'd like to query, for example us, or eu. Yes
LOCALE The language for your selected WoW region, for example en_US, or en_GB. Locale depends on region. Please refer to the Blizzard API documents for more information. At this time this bot will only return data in English. Yes
DISCORD_BOT_TOKEN The token for your Discord bot user, you can sign up for one here. Yes

If a required variable is missing the terminal you executed the bot from will display an error message.

Commands 💻

The following commands are accepted by the bot.

# Displays a players PVE progression, dungeon kills, keystone achievements, etc.
!armory pve <name> <realm>
!armory pve <armory-link>

# Displays a players PVP progression, arena ratings, honorable kills, etc.
!armory pvp <name> <realm>
!armory pvp <armory-link>

# You can also provide an optional region to each query to display players from other WoW regions outside of the bot default, for example EU, US, etc.
!armory pve <name> <realm> <region>
!armory pvp <armory-link> <region>

# Displays the currnet wow token price.
!armory token
!armory token <region>

# Command list/help
!armory help

FAQ 💬

Here's a list of frequently asked questions. Please review the contribution guide if you'd like to support the project.

Q: Why does the bot not recognize my realm?
A: Realm names with multiple words must be seperated by a dash, for example burning legion would be burning-legion.

Q: Why does it show that my alt has completed an achievement?
A: Some achievements are account wide so the API response for your alt will be the same as your main.

Q: Do you plan on supporting Mythic+ scores?
A: Only if the official Blizzard API begins supporting their own metric.

Q: Why don't you show this raid?
A: I aim to support the most recent raids in the current expansion. Because Discord has a character limit I will start trimming the oldest raid in the current expansion if necessary.

Q: What expansion does this bot currently support?
A: Battle for Azeroth.

Screenshot

discord-wow-armory-bot's People

Contributors

dependabot[bot] avatar jamesives avatar lizafloyd avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

discord-wow-armory-bot's Issues

Support Nyalotha

The new patch is right around the corner and Nyalotha support should be added to the bot. This will conclude version 4 so work surrounding version 5 can begin.

Crucible of Storms

Is your feature request related to a problem? Please describe.

Please provide a clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

The Crucible of Storms raid should be supported upon its release.

Describe the solution you'd like

Please provide a clear and concise description of what you want to happen.

It should display all raid data, including season 3 of the mythic+ achievements.

Additional Comments

Add any other context or screenshots about the feature request here.

It may be worth taking some time to update the code base a little bit to make it more scalable.

Typo in Configuration and Configuration Variables in Heroku

Hi! Just wanted to thank you for making this bot, and point you to a "typo":

  1. On the readme.md in the section called Configuration, you mention DISCORD_BOT_TOKEN but when you launch the app using Deploy in Heroku, this key is not mentioned in the Configuration Variables... I had to add it manually...

Allow region to be an optional param

Users should be able to search !armory pve <name> <realm> <region> should they choose to. If region is not specified then it should default to whatever is defined in the os config vars.

This will allow the bot to be used over multiple regions all at once, with only one region being the default. Useful for larger wow communities where the regions interact with each other.

Mythic Dungeon Data

The Blizzard API will soon have some additional data regarding Mythic dungeons. I think it would be neat to support this functionality somehow, and I'm up for suggestions as to how.

https://us.battle.net/forums/en/bnet/topic/20769659813#1

Proposal
An additional command, that allows you to type !armory mythic x burning-legion to display the basic character information, along with the characters best mythic dungeon run for the current season. Another option would be to simply display this data somehow within the !armory pve x burning-legion call.

Only show AOTC if it's completed

As Ahead of the Curve can not be completed once the tier has passed I would like to make it so the achievement only appears if the player has finished on that character.

In addition I'd also like to add Cutting Edge to the list of achievements that can display in place of it.

Battle for Azeroth Raid Information (Initial Tiers)

Placeholder issue for Battle of Azeroth raid information from the first tier. Currently no information has been released regarding the beta/alpha or the release date, so the LOE cannot be assessed until it has.

5.0 Improvements

Theres a couple of improvements I'd like to get out of the way for version 5.0.

  • wow.py should be re-written to use classes, and potentially abstracted into its own module.
  • The discord bot module should be updated to better support things.
  • Figure out a way to make the bot more easily installed in Discord servers. Reach out to other Discord bot providers?
  • Make it more modular so when there are classic API's we can instantly support them.

Migrate API Version

Is this working on the NEW API yet? I am unable to look anything up, and it looks like it still references the old API url.

Cannot get bot online.

Hello, I have setup as per your instructions and the bot shows up in my Discord members list but I cannot seem to get it to send any information. I am not sure what I am doing wrong. Please help! Thanks in advance.

Profile Picture Caching

If a profile picture for a certain character has been fetched recently Discord holds on to the URL for a long time and doesn't let it refresh. This is a nuisance as the profile picture doesn't show new gear a player has recieved or any sort of style updates they've made recently.

The solution for this would be to attach the current unix time to the end of the URL, for instance something like this:

https://render-us.worldofwarcraft.com/character/burning-legion/173/152036269-avatar.jpg?_123

This will cache bust the URL and cause Discord to show the most recent profile picture every time it's requested.

Antorus, the Burning Throne

Add raid content for Antorus, the Burning Throne when it releases (sometime after WoW patch 7.3).

Wondering if at that point it might be worth removing Emerald Nightmare as it will not be very relevant by then.

Zuldazar Raid

As the Zuldazar raid is released it will need to be added to the bot.

The challenging part of this implementation will be figuring out how to do the faction specific bosses.

Allow users to link an armory url to get the characters data

This will allow the following commands:

!armory pve https://worldofwarcraft.com/en-us/character/burning-legion/jimo

This was user suggested as there's addons in the game that copy the armory link to your clipboard, the combination of this will make requesting data from characters with accented characters in their name easier.

discord-wow-armory-bot broken by aiohttp and discord.py

Hi, users are unable to run discord-wow-armory-bot due to dependency conflict with aiohttp package.
As shown in the following full dependency graph of discord-wow-armory-bot, discord-wow-armory-bot requires aiohttp==3.5.4,while discord.py==0.16.12 requires aiohttp>=1.0.0,<1.1.0.

According to pip’s “first found wins” installation strategy, aiohttp==3.5.4 is the actually installed version. However, aiohttp==3.5.4 does not satisfy aiohttp>=1.0.0,<1.1.0.

Dependency tree

discord-wow-armory-bot-4.0.5
| +-aiohttp(version range:==3.5.4)
| +-discord-py(version range:==0.16.12)
| | +-aiohttp(version range:>=1.0.0,<1.1.0)
| | +-websockets(version range:>=3.1,<4.0)

Thanks for your help.
Best,
Neolith

Battle for Azeroth PVP and PVE Milestones

As Battle for Azeroth nears release this bot needs to be updated with data from the new expansion, and data from the previous expansion needs to be removed. I'll be using this ticket here to track the progress.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.