GithubHelp home page GithubHelp logo

r-webdev / webdev-support-bot Goto Github PK

View Code? Open in Web Editor NEW
33.0 1.0 16.0 8.96 MB

Discord bot for web development

Home Page: https://discordapp.com/oauth2/authorize?client_id=649967864425611274&scope=bot&permissions=268462144

License: MIT License

TypeScript 99.49% JavaScript 0.35% Dockerfile 0.16%
discord bot mdn mozilla composer packagist npm npmjs caniuse github

webdev-support-bot's Introduction

Webdev Support Bot

dependencies devdependencies

Bot providing multiple commands to query common sites used during development or helping people on Discord.

Supports

!github via GitHub API,

!composer via packagist API,

!npm via unofficial npmjs.com API,

!mdn via parsing Mozilla Developer Network,

!caniuse via unofficial caniuse API and @mdn/browser-combat-data,

!bundlephobia via unofficial bundlephobia API,

!jquery as explanation on why not to use jquery,

!php via parsing official PHP Docs.

Usage / TLDR

# tag it in discord to receive general help
@bot --help
# provides an example each
!mdn --help
!caniuse --help
!composer --help
!npm --help
!github --help
!bundlephobia --help
# queries MDN with <term>
!mdn <term>
# queries caniuse with <term>
!caniuse <term>
# queries packagist with <package>
!composer <package>
# queries npm with <package>
!npm <package>
# queries github with <term>
!github <term>
# queries bundlephobia with <term>
!bundlephobia <term>
  • single-result queries will directly show the result
  • reacting with a number will filter the result
  • reacting with the red or black x will remove the request

Description

By default, shows the first ten results of any given query, unless only one result was found.

Reacting with a number corresponding to the list entry will filter the list and edit the original message, providing more specific information.

Add to your server by...

...accessing this link.

Demo

Development

git clone https://github.com/ljosberinn/webdev-support-bot/

cd webdev-support-bot

cp .env.example .env # and enter a token

yarn install # or npm install
code .

yarn dev # or npm dev

# or be fancy with a one-liner
git clone https://github.com/ljosberinn/webdev-support-bot/ && cd webdev-support-bot && cp .env.example .env && yarn install && code . && yarn dev

Environment variables

In development, you generally want to take the .env.example and rename it to .env. You also shouldn't commit your .env file. If you make any changes to the environment variables, you should update .env.example. accordingly.

Running tests:

$ npm test

Found a bug/want to contribute?

Please head over to GitHub.

webdev-support-bot's People

Contributors

denis-onder avatar dependabot-preview[bot] avatar dependabot[bot] avatar esfox avatar gmemstr avatar imgbotapp avatar laquasicinque avatar ljosberinn avatar lordka0s avatar mergify[bot] avatar mjomaa avatar nathancyam avatar purduekenny avatar renovate-bot avatar renovate[bot] avatar ronvoluted avatar timkolberger avatar wiktoriavh 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

webdev-support-bot's Issues

Add onboarding copy to alerts for new users

When a points-awarded message gets sent, include the following text to encourage new members to participate.

Thank a helpful member by replying "thanks @username" or respond to their message using one of the emojis listed in #rules."

Use similar implementation as the image below:
image

Point Decay Module Expansion

When a user hits the points that sets the Helpful role, they can automatically decay out of the role based on the 24-hour timer that is set. In order to avoid this, we want separate triggers for role assignment and unassignment.

Role Assignment: 20 points
Role Unassignment: 16 points

This allows at least 3 days for the user to maintain their role before being demoted.

Points: prevent gaming by liking own comments

If I go to any old comment that I made and I ๐Ÿ‘ it myself, I still get points for the helpful role and it would be hard for anyone to notice.

If I do it 10 times, I will award myself the role.

Update onboarding copy

Above If you agree to these guidelines, type ok. If not, or you want to exit the form explicitly at any time, type cancel. Add the following copy:

If your compensation is deemed unfair by the moderation team, your job posting will be removed.

feat: Sticky Messages

Currently we're using dyno to repeatedly post messages every X hours. This can be kinda spammy.

A better method for this could be done by deleting the previous version of the message and posting a new one after X number of messages, so that there is only one version of a message at any one time.

e.g Job posting sticky is always reposted after a new job posting

feat: Modmail

We're currently using a third party tool for modmail, there's some issues people have with needed to discord auth with it as it's on multiple servers. If we fold this into our own bot this no longer becomes a requirement. Modmail channels should also be threads so they don't get lost and can be searched.

Also add in ability to easily report messages and users from a context menu would be possible.
Also automate certain common actions mods take (purposely vague)

!command\n crashes the bot

writing !mdn Proxy will run fine but

!mdn
proxy

will cause the bot to crash due to the keywords and the regex not lining up

feat: Starboard

Allow users to "star" a message, messages with X amount of stars can then appear in a starboard

How

  • User stars a message, once X stars have been reached
  • If no starboard thread has been created, create new starboard thread and pin it
  • Add message to the starboard.

Dependency Dashboard

This issue lists Renovate updates and detected dependencies. Read the Dependency Dashboard docs to learn more.

Rate-Limited

These updates are currently rate-limited. Click on a checkbox below to force their creation now.

  • chore(deps): update dependency dotenv to v16.0.3
  • chore(deps): update dependency husky to v8.0.2
  • fix(deps): update dependency compare-versions to v4.1.4
  • fix(deps): update dependency date-fns to v2.29.3
  • fix(deps): update dependency discord.js to v13.12.0
  • fix(deps): update dependency node-html-parser to v5.4.2
  • fix(deps): update dependency typescript to v4.9.3
  • chore(deps): update jest monorepo to v29 (major) (@types/jest, jest, ts-jest)
  • chore(deps): update node.js to v18 (node, @types/node)
  • fix(deps): update dependency compare-versions to v5
  • fix(deps): update dependency discord.js to v14
  • fix(deps): update dependency node-html-parser to v6
  • ๐Ÿ” Create all rate-limited PRs at once ๐Ÿ”

Open

These updates have all been created already. Click a checkbox below to force a retry/rebase of any.

Detected dependencies

github-actions
.github/workflows/deploy.yml
  • actions/checkout v3
  • akhileshns/heroku-deploy v3.12.12
npm
package.json
  • @mdn/browser-compat-data 5.1.3
  • @sentry/node 7.3.1
  • compare-versions 4.1.3
  • cross-env ^7.0.3
  • date-fns 2.28.0
  • discord.js 13.8.1
  • dom-parser 0.1.6
  • domyno 1.0.1
  • fuse.js 6.6.2
  • html-entities 2.3.3
  • lodash-es 4.17.21
  • mongoose 6.4.1
  • node-cache 5.1.2
  • node-fetch 3.2.6
  • node-html-parser 5.3.3
  • ts-node 10.8.1
  • typescript 4.7.4
  • @sentry/types 7.3.1
  • @types/dom-parser 0.1.1
  • @types/html-entities 1.3.4
  • @types/jest 28.1.3
  • @types/mongoose 5.11.97
  • @types/node 18.0.0
  • @types/node-fetch 3.0.3
  • dotenv 16.0.1
  • eslint 8.18.0
  • eslint-config-galex 4.1.4
  • husky 8.0.1
  • jest 28.1.1
  • lint-staged 13.0.3
  • nodemon 2.0.18
  • prettier 2.7.1
  • ts-jest 28.0.5
  • node 16.15.0
nvm
.nvmrc
  • node 16.15.0

  • Check this box to trigger a request for Renovate to run again on this repository

Point Set Command

An admin command that allows a user to set the points of another user. The required input is the command, the user tag, and an integer.

Ex: !points set @username 23

The command should remove or add the role, as appropriate.

Points Cooldown

When user A awards a point to user B, user A should not be able to award additional points to user B for a set duration. This discourages abuse. Perhaps start with a 30-minute cooldown?

Action Required: Fix Renovate Configuration

There is an error with this repository's Renovate configuration that needs to be fixed. As a precaution, Renovate will stop PRs until it is resolved.

Error type: undefined. Note: this is a nested preset so please contact the preset author if you are unable to fix it yourself.

When a user requests !leaderboard provide the user's position and points

  • If the user is in the leaderboard, bold the entry.
  • If the user is outside the leaderboard, provide their position and points.

Ex:

  1. Gerrit - 4999 points
  2. Naito - 600 points
  3. Kenny - 589 points
  4. ...
  5. ...
  6. ...

Ex 2:

  1. Gerrit - 4999 points
  2. Naito - 600 points
  3. Titan- 589 points
  4. ...
  5. ...
  6. Ox
    --
  7. Kenny - 2 points

[info] add server id to logs

seeing many channel #moderator-log does not exist on this server in the heroku logs and would like to make whoever is using the bot aware of that

Channel Management Feature

Problem

When attempting to communicate the purpose of channels in a message, only one user is able to maintain the list as it evolves. This causes either an undue burden or an outdated channel list depending on the motivation of the original poster.

Solution

Develop a module that keeps track of channel names and their respective descriptions and category. The module will then have the ability to post to a channel, designated by a settings command, the current channel mapping.

Questions

  • Can the bot collect the current existing categories and channels and populate the list of categories and channels when first added to a server?

Requirements

  • As an administrator, I can create new channels.
  • As an administrator, I can create new categories.
  • As an administrator, I can associate channels with only one category.
  • As an administrator, I can associate a description property to a channel.
  • As an administrator, I can set the channel that I want to output the channel list.
  • As an administrator, I can prompt the bot to make a new post that outputs the channel list in the specified format below.
  • As an administrator, I can edit an existing channel to give it a new description or associate it to a different category.

Format

Category

#channel-name: channel_description_copy
#channel-name-2: channel2_description_copy

Category 2

#channel-name-3: channel3_description_copy
#channel-name-4: channel4_description_co

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.