open source ffxiv community discord bot that's incredibly easy to self-host

Overview

Venat

Codacy grade npm version License

Venat is an open-source Discord bot for the Final Fantasy XIV community that is incredibly easy to self-host.

Description

We aim to offer the following features:

  • Provide moderation and role management.
  • Provide integrations with popular ffxiv services and streaming sites.
  • Provide fun community features like music, games, and give-aways.
  • Provide admin dashboard for managing the bot.

We are working towards building this in a modular way, so that you can pick and choose what features you need for your server. This modular approach should also allow Venat to be extended to other game communities in the future.

Warning

Venat is in very early development and is not yet intended for general use. It's available now for developers and other contributors.

Development

Pre-requisites

  • Node >=16.6.0
    • Newer Node versions may be supported, but Venat is currently developed and tested only with Node 16.x.
  • Yarn
  • Docker
  • nvm (optional)

Setup Bot

  1. Log into Discord portal: https://discord.com/developers/applications.
  2. Create new application.
  3. Select OAuth2 on left side.
  4. Select Reset Secret.
  5. Copy client secret and save for later.
  6. Select URL Generator on left side.
  7. Select the following scopes:
    1. bot
    2. applications.commands
  8. Select the following bot permissions:
    1. Administrator
  9. Copy generated url for later.
  10. Select Bot on left side.
  11. Add Bot to application.
  12. Update the following settings:
    1. Presence Intent: On
    2. Server Members Intent: On
    3. Message Content Intent: On
  13. Select the following bot permissions:
    1. Administrator
  14. Open generated url in web browser to authorize.

Setup Workspace

  1. Fork repo https://github.com/the-convocation/venat.
  2. Clone fork to local workspace.
  3. Create copy of core/.env.example and rename to .env.
  4. Update the following env variables in .env:
    1. Set TOKEN to the client secret from previous step.
    2. Set GUILD_ID_WITH_COMMANDS to your discord server id.
  5. Open command line to root dir.
  6. Run yarn install.

Run Bot

  1. Run docker run -e POSTGRES_PASSWORD=postgres -e POSTGRES_DB=venat -p 5432:5432 postgres.
  2. Run yarn dev.
  3. Verify bot is working by using the /play command.

Modules

Venat is built with modules to allow server owners to select the features they want and help aid in development efforts. The modules should be named as follows: venat-module-area-feature (e.g. venat-module-xiv-market).

Help

Discord server coming soon. For now, please open an issue.

License

This project is licensed under the AGPL-3.0 license.

Comments
  • Implement a non-Core FFXIV Weather Plugin

    Implement a non-Core FFXIV Weather Plugin

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

    We require a Weather plugin for potential dependencies from other plugins.

    Describe the solution you would like.

    We need a Weather Plugin with methods to get weather data for any given zone at any given time. May require #74 first for zones handling and weather types first-hand. Would be required for #78.

    That may potentially include a command for users : /weather Upper la Noscea now but that may be messy because of localization and/or time. Maybe we could, however, use Discord Select Menus to allow the user to choose from options we would set ourselves and avoid confusion / wrong options input but that would make the overall command use slower.

    Pinging @karashiiro here as I've read somewhere that kara had a weather lib already.

    Describe alternatives you've considered.

    Make ingame bots in each zone in the game where it could be talking to Skywatcher NPCs every 2 hours, then proceed to screenshot the NPC's text, OCR it and send it to a core API. May cause insane devs to become even less sane.

    Screenshots

    No response

    enhancement Priority P3 
    opened by MKhayle 9
  • Implement module for Kaiyoko's fashion report

    Implement module for Kaiyoko's fashion report

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

    Describe the solution you'd like Fashion module.

    Describe alternatives you've considered No

    Additional context I want MGP

    enhancement non-core module Priority P3 
    opened by karashiiro 5
  • Auto-Moderation

    Auto-Moderation

    For the sake of clarification within this issue "admin-defined" refers to a discord admin with bot access privileges.

    • [ ] Auto Ban/Kick/Delete message on ${message || term} #80
    • [ ] Auto Ban/Kick/Delete message on ${spam || raid} #82
    • [ ] Auto Kick if no roles in x admin-defined days #83
    • [ ] Anti-Phish #84
    • [ ] Auto-Slowmode? #82
      • [ ] Not sure if this is something that anyone would need but perhaps if the message creation rate in a certain channel over x minutes is too high it can automatically set a slowmode on the channel that is admin defined.
    • [ ] Auto-Remove New users #83
      • [ ] Automatically kicks users where their account is newer than an admin defined value.
    • [ ] Join Gate #85
      • [ ] In-Browser questionnaire admin-defined - ONLY MULTIPLE CHOICE?
      • [ ] Captcha - Optional or as the only source of verification

    Adding this to automod despite being a xiv feature because I feel it fits here better

    • [ ] Lodestone Bio Verification #73

    This is a draft of features, not necessarily complete. Just trying to get all my thoughts down.

    enhancement discussion 
    opened by ArcaneDisgea 5
  • feat(config): working config module + tests

    feat(config): working config module + tests

    Describe your changes

    yep. Also fixes migrations not being run, so you can turn DATABASE_SYNCHRONIZE=false again now when not doing any database work.

    Issue ticket number and link

    #61

    opened by avafloww 3
  • feat: implement ffxiv weather module

    feat: implement ffxiv weather module

    Describe your changes

    Adds an FFXIV weather module for looking up weather forecasts.

    New command: /weather <zone> <lang> image

    The embed accent color is extracted from the icon.

    The main body of the embed does not consider time zones, so I left those in UTC. The footer uses the embed's timestamp field, though, which automatically shows up in the user's locale.

    Issue ticket number and link

    Closes #87

    opened by karashiiro 2
  • chore(market): more module cleanups

    chore(market): more module cleanups

    Adds named types for the market function's dependencies, along with a doc comment and some cleanup of duplicated code from #58 (that we all didn't notice).

    opened by karashiiro 2
  • Define commit standards

    Define commit standards

    Any standards to keep things consistent and let us generate change logs easier?

    https://www.conventionalcommits.org/en/v1.0.0/ https://github.com/webiny/action-conventional-commits

    enhancement discussion 
    opened by kalilistic 2
  • feat: add plugin for Kaiyoko's fashion report

    feat: add plugin for Kaiyoko's fashion report

    Describe your changes

    Adds a plugin for Kaiyoko's fashion report.

    New command: /fashion <theme|100 points|full details>

    image

    Issue ticket number and link

    #71

    opened by karashiiro 1
  • fix: issue forms

    fix: issue forms

    Describe your changes

    Fix the issue forms that apparently didn't work.

    I don't know why the commits are so screwed but that's what squash is for right?

    Issue ticket number and link

    opened by ArcaneDisgea 1
  • feat(sentry): add optional sentry support

    feat(sentry): add optional sentry support

    (nice)

    Describe your changes

    Sentry support is optional and enabled only when the SENTRY_DSN environment variable is set. This adds a very barebones app-level exception filter that simply reports the error to Sentry; this call is a no-op if the Sentry API has not been initialised.

    Issue ticket number and link

    #63

    opened by avafloww 1
  • chore(build): enable strict mode

    chore(build): enable strict mode

    title.

    yeah, i know. strict mode is irritating sometimes, and forces you to write dumb types sometimes.

    but at the end of the day, the time you lose to doing that is going to vastly less than the time spent tracking down esoteric null derefs and suchforth. ts without strictmode is just sparkling javascript.

    opened by ackwell 1
  • Simpler Kaiyoko commands

    Simpler Kaiyoko commands

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

    Currently, the fashion report commands just repost the latest images from Kaiyoko's Twitter feed. The images are small in embeds, so you need to expand them and open them in a browser to get them in their full sizes.

    Describe the solution you would like.

    Extract item information from the images using OCR and provide that information instead of the infographic.

    Describe alternatives you've considered.

    Train an ML model on all 225 solutions (or as many as Kaiyoko has posted) to learn all of the items visually.

    Screenshots

    No response

    enhancement non-core module Priority P4 
    opened by karashiiro 0
  • Define my own aliases

    Define my own aliases

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

    I want to define an alias for any commands.

    Describe the solution you would like.

    A way by command and/or dashboard that I can set alternative commands.

    Describe alternatives you've considered.

    N/A

    Screenshots

    No response

    enhancement Priority P3 
    opened by kalilistic 0
  • Check dalamud plugin status

    Check dalamud plugin status

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

    I want to know if there's "any update" on a plugin. Show plugin meta data including status, last updated, etc.

    Describe the solution you would like.

    There's an open PR that's been approved on dalamud side to keep a metadata.json files in assets. Could check this and plugin master in dalamudplugins. /dalamudplugin sillychat

    Describe alternatives you've considered.

    N/A

    Screenshots

    No response

    enhancement Priority P3 
    opened by kalilistic 1
  • [Informational] Guild Info Command

    [Informational] Guild Info Command

    A command to display information about a guild.

    • [ ] Server Owner
    • [ ] Creation Date
    • [ ] Locale
    • [ ] Member Count
    • [ ] MFA Level
    • [ ] Verification level
    • [ ] Explicit Content Filter
    • [ ] Parter Status
    • [ ] Verified Status
    • [ ] Boost Level
    • [ ] Boosts

    image

    enhancement Priority P3 
    opened by ArcaneDisgea 0
  • [Informational] User Info Command

    [Informational] User Info Command

    Provides a users information from the discord api.

    /user @ArcaneDisgea#9124

    • [ ] User Info
      • [ ] Avatar
      • [ ] General Account Information
        • [ ] Creation Date/Age
        • [ ] Join Date/Age
        • [ ] Nitro Status
        • [ ] Boost Status
        • [ ] Badges
        • [ ] Roles
        • [ ] Nicknames
        • [ ] Status
        • [ ] Bio

    I don't have a screenshot handy of the user command sorry.

    Avatar also could be it's own separate command in order to provide a larger view of the avatar maybe?

    image

    enhancement Priority P3 
    opened by ArcaneDisgea 0
Releases(v0.6.0)
Owner
The Convocation
The Convocation
An easy-to-use discord bot including database, slash commands and context menus !

Discord Bot Template An easy-to-use discord bot using Discord.JS V13. Wiki Includes: Slash commands Database User commands and more in future Requirem

Gonz 108 Dec 28, 2022
:green_book: SheetJS Community Edition -- Spreadsheet Data Toolkit

SheetJS js-xlsx Parser and writer for various spreadsheet formats. Pure-JS cleanroom implementation from official specifications, related documents, a

SheetJS 32k Jan 9, 2023
The social network for developers. Discover creative websites and build a community.

Driwwwle The Social Network for Developers Features ⚡ Server-side rendering with Next.js ?? Cookie-based authorization with JSON web tokens ?? Infinit

Nitin Ranganath 107 Dec 26, 2022
An open source cybersecurity protocol for syncing decentralized graph data.

GUN is an ecosystem of tools that let you build community run and encrypted applications. Currently, Internet Archive and HackerNoon run GUN in produc

Mark Nadal 16.7k Dec 27, 2022
Open source code of classic.minecraft.net

Minecraft classic Open source This Project is a clone for classic.minecraft.net. Owner of this Repo (CodeWhiteWeb) doesn't have any rights to this pro

CodeWhiteWeb 4 Dec 16, 2022
StashQL is a light-weight, open-source npm package that improves the speed of your GraphQL queries in your application.

Table of Contents What is StashQL? Install Getting Started Queries Mutations refillCache clearRelatedFields Logging The Team What is StashQL? StashQL

OSLabs Beta 67 Sep 30, 2022
It is a Discord bot whose goal is to make it easier for server owners to create a so-called Staff/Mode Application

Application Bot MeCodes Application Bot It is a Discord bot whose goal is to make it easier for server owners to create a so-called administration sub

null 26 Dec 12, 2022
An easy-to-use multi SQL dialect ORM tool for Node.js

Sequelize Sequelize is a promise-based Node.js ORM tool for Postgres, MySQL, MariaDB, SQLite and Microsoft SQL Server. It features solid transaction s

Sequelize 27.3k Jan 4, 2023
Lovefield is a relational database for web apps. Written in JavaScript, works cross-browser. Provides SQL-like APIs that are fast, safe, and easy to use.

Lovefield Lovefield is a relational database written in pure JavaScript. It provides SQL-like syntax and works cross-browser (currently supporting Chr

Google 6.8k Jan 3, 2023
⛏ Mining Infrastructure Made Easy

Carrot Pool Enterprise proof-of-work infrastructure & API for blockchain mining. Setup & Install » Demo · Report Bug · Roadmap · Updates Background Ca

HashRabbit 53 Jan 5, 2023
A proposal to add modern, easy to use binary encoders to the web platform.

proposal-binary-encoding A proposal to add modern, easy to use binary encoders to the web platform. This is proposed as an addition to the HTML spec,

Luca Casonato 35 Nov 27, 2022
Very easy graphQL example made by Bobby Chao

Very easy graphQL example made by Bobby Chao. The folder has been organized, the module has been split, and it can be directly used as a development scratch. It using graphQL + node.js + express, and MySQL as datasource.

Bobby Chao 4 Sep 18, 2022
💼 Easy Apply, a job-hunting service

Motivation Easy Apply is a job search tool that improves upon the current job seeking process by allowing users to create a video introduction of them

Tien Thanh Le 3 Mar 20, 2022
graphql-codegen plugin to generate type-safe, easy-to use hooks for Flutter

graphql-codegen-flutter-artemis-hooks This is graphql-codegen plugin to generate type-safe, easy-to use Flutter artemis hooks. For further detail, see

seya 18 Jan 2, 2023
⛰ "core" is the core component package of vodyani, providing easy-to-use methods and AOP implementations.

Vodyani core ⛰ "core" is the core component package of vodyani, providing easy-to-use methods and AOP implementations. Installation npm install @vodya

Vodyani 25 Oct 18, 2022
A JSON Database that saves your Json data in a file and makes it easy for you to perform CRUD operations.

What is dbcopycat A JSON Database that saves your Json data in a file and makes it easy for you to perform CRUD operations. ⚡️ Abilities Creates the f

İsmail Can Karataş 13 Jan 8, 2023
A simple easy-to-use database, built for beginners.

ByteDatabase: Built for Beginners Table of Content Features Installation Changelog Quick Examples Contributors Features Persistent Storage: Data store

CloudTeam 9 Nov 20, 2022
Explore, create and deploy your SQLite databases right from your browser. Quick and easy, no installation required.

SQLighter (under development, alpha code) SQLighter is a database explorer born for SQLite that helps you design and deploy your application database

sqlighter 11 Sep 20, 2022
Fast File is a quick and easy-to-use library to convert data sources to a variety of options.

Fast File Converter The Express.js's Fast File Converter Library Fast File Converter Library is a quick and easy-to-use library to convert data source

Ali Amjad 25 Nov 16, 2022