corvo astral

A Discord Bot that serves as an Wakfu helper

28
4
TypeScript

🌙 Corvo Astral

https://img.shields.io/badge/host-koyeb-blue
https://img.shields.io/badge/repo%20status-maintenance-yellow
contributions welcome

Corvo Astral is a Discord Bot that provides information about the Wakfu MMORPG game.

If you wish to add this bot to your server, access this link.

Most features support Wakfu community languages: en, es, pt and fr.

If you need help or want to report bugs, feel free to join the bot’s discord: https://discord.gg/aX6j3gM8HC

This bot is now featured in top.gg: https://top.gg/bot/750529201161109507

To keep the bot running, please consider donating <3

Commands

  • /alma: returns the Almanax Bonus for the current day
  • /calc: calculates the damage for an attack given some values
  • /subli: search for sublimations by name, slot combination or source
  • /recipe: search for recipes by name and rarity
  • /equip: search for equipment by name and rarity
  • /party: create, update, join or leave a party listing
  • /about: get information about this bot
  • /config: configure custom settings for each discord channel
  • /help: get help for available commands

Features

⛅️ Almanax

Find out the current Almanax bonus and optimize your farming with /alma command.

image

🕰 Daily Almanax Notification

At 00:01 Europe/France Timezone (GMT+2) (server time), the bot will send the /alma command to a channel named almanax or any other named defined by the /config command.
If you wish to disable this behavior, simply deny permission to this bot on that channel.

image

👥 Party Listing

When using /party-create command, the bot will create a new party list and it’ll post it on the channel defined by the /config command (listagem-de-grupos by default).
It’ll also listen to reactions so members can join or leave groups.
To make use of this feature, make sure that the bot has enough permissions to the configured channel.

Examples:

/party-create name: Boss Smasher
/party-create name: Ogrest description: If it's your first time, it's okay date: Tomorrow 8PM level: 200 slots: 3

image

🌎 Internationalization

Most commands accept lang: <lang> and translate: <lang> options.
A server administrator can also set the default language with /config command.
Available languages are en, es, pt and fr.

image

image

🛡 Equipment search

An equipment search is available with /equip name: <name> command.
It’s also possible to filter them by a rarity option.
If a recipe is associated, it can be displayed by reacting with 🛠️

Examples:

/equip name: martelo de osamodas lang: pt
/equip name: the eternal rarity: mythical

image

💎 Sublimation search

The command /subli can search by sublimation name, type, rarity and slots combination.
When searching by slots combination, it’s possible to match with white slots and/or by random ordering.

Examples:

/subli by-name name: bruta
/subli by-name name: bruta translate: fr
/subli by-name name: talho lang: pt
/subli by-slots slots: rwb
/subli by-slots slots: rgbg random: true
/subli by-slots slots: epic

image

image

📜 Recipe search

Similar to the commands above, you can search for recipes by name and rarity.
Recipes with same results are shown together.

Examples:

/recipe name: brakmar sword
/recipe name: espada de brakmar lang: pt
/recipe name: peace pipe rarity: mythical
/recipe name: o eterno rarity: mítico lang: pt

image

🥊 Damage Calculator

It’s possible to simulate an attack by providing some numbers to the .calc commands.
Maybe in the future we can add new options to it.

Examples:

/calc dmg:3000 base:55 res:60%
/calc dmg:5000 base:40 res:420 crit:30%

image

👷 Builder Integration

By sending a Zenith’s build link, the bot will access the link, take a printscreen and send it as a preview to the chat.
It’ll also sum the highest elemental damage with all other non-negative secundary masteries and display it on the message.
You can disable this behavior by using .config set buildPreview=disabled
Note: this feature is currently disabled since Zenith has changed their interface. If you wish it back, please consider supporting.

buildPreviewEx

⚙️ Configurable options

Some bot options can be configurable according to each server using .config.
Options:

  • lang: default bot language between fr, en, es and pt (default: en)
  • almanaxChannel: channel to receive the .alma command daily (default: almanax)
  • partyChannel: channel to receive the .party command (default: listagem-de-grupos)
  • buildPreview: enabled (default) or disabled to show a build printscreen and other info

Examples:

/config get
/config set lang: en
/config set almanax-channel: #temple-bonus
/config set party-channel: #party-listing

Disabled Features

The following features are currently disabled due to external limitations, such as scrapping protection in Ankama’s websites.

🌌 Krosmoz Almanax

Inspired by wakmanax, the /alma command used to scrap Krosmoz Almanax page and returned tons of cool stuff such as Protector of the Day, Zodiac, Trivia, Event and Forecast.

🐲 Monster search

When Wakfu’s web scrapping was working, we could search for monsters by typing /mob name: ogrest, for example
It would show their characteristics, damage, resistances, drops and spells.

papatudoMob

🚧 Roadmap

  • Slash commands ✅
  • Almanax Bonus Forecast
  • Zenith Build Preview
  • Sublimation Custom Drop Information
  • Extended internationalization
  • Extended configuration

📈 How to contribute

If find a wrong translation or want to try fixing a bug by yourself, feel free to open a Pull Request to this project.
In case you just want to report a bug or submit a suggestion, join us in the bot’s Discord server.

# Install system dependencies
sudo apt install nodejs npm git

# Clone this repository
git clone https://github.com/Markkop/corvo-astral.git

# Install project dependencies
cd corvo-astral
npm install

# Setup environment variables
cp .env.example .env

# Create a Discord bot and set it's DISCORD_BOT_TOKEN for local testing

# After coding, run tests and lint
npm run test
npm run lint

# Create a new branch and push it to make a Pull Request
git checkout -b <branch name>
git add .
git commit -m "<commit name>"
git push origin <branch name>

# Deploy is made automatically to Railway
https://railway.app/project/64e147d3-7c3e-4ed2-a89e-1cbea68e225a/service/9d2b5ab2-d5c2-4e32-9f26-bf5ad922ab2f