Code Monkey home page Code Monkey logo

genesis's Introduction

Project Genesis Genesis Avatar

Supported by the Warframe Community Developers semantic-release: angular

A Discord.js bot for tracking Warframe alerts, invasions and more.

Contribute

Crowdin Discord

Live Public Bot info

Discord Bots Discord Bots Discord Bots

JetBrains

Thank you to JetBrains for providing us with free licenses to their great tools.

Feel free to submit a pull request. We are working on build checks and tests, and we use aribnb's codestyle and eslint configuration. Plugins for auto-linting on save are available for many popular editors.

Thanks, Discord... Legalese things

Due to the New Discord T.O.S , if you continue to use, participate, be in, or not leave Cephalon Sanctuary, you agree to allowing me, any person, user, or member, any bot, service, app, and anything to collect, use, transmit, or any data related to your user account, any data made available by Discord in the API or SDK, any metadata from your user account, any messages and or content you send, and anything else you do or give by staying in Cephalon Sanctuary, or by using my bot.

If you do not agree to letting Genesis, Oratoris, or any other bot there do so, please kick Genesis from your servers.

tl;dr Bots need data. While I don't record any of your personal data or save it off for long-term use, I still need to tell you that bots can access your messages and user ID. If you don't want that, get rid of all of them, cause they all need that data.

Installation

  1. Clone this repo

    # For SSH
    git clone [email protected]/genesis.git
    
    # For HTTPS
    git clone https://github.com/WFCD/genesis.git
  2. Install mysql server and configure a database to store settings and data

  3. Run npm i

  4. Start bot with pm2 using a copy of the provided pm2.json file. The scripts assume it's named genesis.json

  5. See below for available config / commands

Configuration

Genesis requires a MySQL server. It uses the MYSQL_* environment variables for determining where to connect to

Base

Environment Variable Description Example Default
TOKEN Discord connection token mfa.234089sdfasdf20dfada,f.asd N\A
LOG_LEVEL Logging level of the bot, including info, debug, error, fatal DEBUG ERROR
MYSQL_DB MySQL database name, used for connecting to data provider and storage genesis genesis
MYSQL_PASSWORD MySQL database connection password password N\A
MYSQL_USER MySQL database connection user genesis genesis
MYSQL_PORT MySQL database connection port 3306 3306
MYSQL_HOST Hostname for conneting to MySQL localhost localhost
SHARD_OFFSET Offset of the first shard id for the local shards, default 0 2 0
LOCAL_SHARDS Number of shards locally 2 1
SHARDS Total number of shards 1 1
OWNER ID of the person owning/running the bot, used for checking permissions
PREFIX Default prefix to use for the instance \ \
RAVEN_URL DSN url for logging data to Sentry 'https://***:***@sentry.io/***' N\A
CONTROL_WH_ID Webhook id for the control webhook for system notifications '0293485092348490834' N\A
CONTROL_WH_TOKEN Webhook token for the control webhook for system notifications asdpiofja[ospdj34095u8340wpodfj+_asdf-oja N\A
BUG_WH_ID Webhook id for the bug webhook '0293485092348490834' N\A
BUG_WH_TOKEN Webhook token for the bug webhook asdpiofja[ospdj34095u8340wpodfj+_asdf-oja N\A

Stats tracking

Environment Variable Description Example Default
DISCORD_BOTS_WEB_TOKEN Token used to update bots.discord.pw bot statistics as;dofiahsdf N\A
DISCORD_BOTS_WEB_USER Bot user id on bots.discord.pw to update with server count 6456514654966321321 N\A
DISCORD_CARBON_TOKEN Carbonitex bot token for posting server data to Carbonitex as;dofiahsdf N\A

Flair configuration

Environment Variable Description Example Default
EMBED_URL Default link that embeds use in their title https://warframestat.us https://warframestat.us
EMBED_ICON_URL Default icon URL that embeds use in their footer https://warframestat.us/wfcd_logo_color.png https://warframestat.us/wfcd_logo_color.png
BASE_PRES_MSG Default presence message @Bot help @Bot help
BASE_PRES_ACT Default presence activity. Must be a valid discord.js value WATCHING PLAYING

Feature Flags

Environment Variable Description Example Default
GAMES Feature flags to enable WARFRAME,UTIL,LOGGING CORE
  • CORE does not need to be specified ever, it will always load
Flag Feature Default
CORE Core features of the bot
UTIL Common utility functions that are domain agnostic, such as LFG and builds
LOGGING Just what it sounds like, logging guild actions
CODES Managing promo codes, like Warframe Glyph codes
FUN Fun stuff, like 8Ball and corgis
WARFRAME Warframe functionality, like tracking and Warframe informational Commands
DESTINY2 For an in-progress section allowing people to expand Genesis into Destiny 2
GIVEAWAYS Giveaway functionality
CUST_CMDS Custom commands - user-generated simple commands
ROOMS Automated & manual room creation
BLOCK Enable user disable features
CMD_MGMT Command management
BOT_MGMT Bot Management

Setting up Twitch

Environment Variable Description Example Default
TWITCH_CLIENT_ID Twitch Client ID for querying Twitch API uo6dggojyb8d6soh92zknwmi5ej1q2 N/A
TWITCH_USER_LOGIN The Twitch user login to watch warframe warframe
TWITCH_POLL_INTERVAL_MS How often to poll Twitch for stream updates (in milliseconds) 10000 10000

In order to setup Twitch you need to specify your Twitch API Client ID. See the following link on how to get one:

Other Features

Environment Variable Description Example Default
LFG_ACTIVE_COLOR Hex color as a string for an active LFG embed "0xaf01ff" "0x9370db"
LFG_EXPIRED_COLOR Hex color as a string for an expired LFG embed "0xff0000" "0xff0000"

Commands

Honestly too many to put here

License

License: Apache 2.0

Private Docker Build!

Want to build your own image? All you (should) need to do is:

  • clone this repo
  • install docker
  • install nodejs (and npm)
  • run npm run build (builds the docker image and punishes locally)
  • Copy docker-compose.example.yaml and update the environment variables to your needing
  • Run docker-compose up -d
  • If you'd like to check logs, use docker logs genesis --follow

genesis's People

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  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  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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

genesis's Issues

TypeError: Cannot read property '0' of undefined

http://sentry.imjake.me/sentry/genesis/issues/9/

TypeError: Cannot read property '0' of undefined
  File "/home/tobiah/genesis/node_modules/warframe-nexus-query/lib/item.js", line 116, in getColors
  File "/home/tobiah/genesis/node_modules/get-image-colors/index.js", line 39, in null.<anonymous>
  File "/home/tobiah/genesis/node_modules/get-pixels/node-pixels.js", line 177, in ReadFileContext.callback
  File "fs.js", line 335, in FSReqWrap.readFileAfterOpen [as oncomplete]

TypeError: Cannot read property '0' of undefined

RangeError: The shardId option must be less than shardCount.

http://sentry.imjake.me/sentry/genesis/issues/3/

RangeError: The shardId option must be less than shardCount.
  File "/home/tobiah/genesis/src/bot.js", line 46, in new Genesis
    this.client = new Discord.Client({
  File "/home/tobiah/genesis/main.js", line 50, in Object.<anonymous>
    const shard = new Genesis(process.env.TOKEN, logger, {
...
(15 additional frame(s) were not displayed)

RangeError: The shardId option must be less than shardCount.

Disabling link preview makes bot messages empty

Hello, I've stumbled upon a bug today

I hated these bloated link preview messages in chat, so I disabled them in options, under Text & images -> Link preview.

About two weeks later I learned that I don't see contents of Genesis' messages at all. After poking around in options, I found out that this the aforementioned option breaks messages from the bot.

Reproduction: disable Link preview in Options, trigger any bot message

Here are quick reproduction screenshots http://imgur.com/a/htOjV

Tested on: Windows, Linux, Android.

Notification framework

need a system for receiving and sending notifications from an event-emitter for handling worldstate alerts

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.