Skip to content

Commit

Permalink
Update documentation and prepare 2.0 release
Browse files Browse the repository at this point in the history
  • Loading branch information
gideontong committed Jul 4, 2020
1 parent 639321c commit d3b6e08
Show file tree
Hide file tree
Showing 14 changed files with 395 additions and 99 deletions.
2 changes: 1 addition & 1 deletion SECURITY.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ If you find a vulnerability, feel free to use the [issue tracker](https://github

Sign your emails with the following key:

```text
```bash
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: OpenPGP.js v4.10.4
Comment: https://openpgpjs.org
Expand Down
2 changes: 1 addition & 1 deletion config/config.json
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@
"clearHistory": 100,
"trollProbability": 0.01,
"kevinSarcastic": 0.03,
"uniqueCommands": 13
"uniqueCommands": 16
},
"links": {
"website": "https://amyhelps.ml",
Expand Down
3 changes: 2 additions & 1 deletion config/permissions.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,8 @@
"grantachievement",
"revokeachievement",
"tell",
"printemoji"
"printemoji",
"loadingscreentips"
],
"admins": [
"132525049977503744"
Expand Down
6 changes: 5 additions & 1 deletion docs/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,12 @@
# Changelog

![HitCount](http://hits.dwyl.com/gideontong/Amy.svg)

As always, you can read about and download the latest releases from [Amy's releases page](https://github.com/gideontong/Amy/releases).

## Unreleased Changes
## [v2.0.0 Elephant](https://github.com/gideontong/Amy/releases/tag/v2.0.0)

We will transition from using Greek letter to using names of animals in alphabetical order to name our releases. This marks the **elephant update**.

This release brings:

Expand Down
38 changes: 38 additions & 0 deletions docs/CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
# Introduction

![HitCount](http://hits.dwyl.com/gideontong/Amy.svg)

First off, thank you for considering contributing to Amy. It's people like you that make Amy who she is today. Following these guidelines helps to communicate that you respect the time of the developers ([Dudes of 708](https://www.youtube.com/channel/UCdbqUWT3_0WgybqNuCX9uJA)) managing and developing this open source project. In return, they should reciprocate that respect in addressing your issue, assessing changes, and helping you finalize your pull requests.

## What We Need

On the developer side, our main developer, [Gideon Tong](https://gideontong.com) is doing just fine. If you spot a bug or other issue, you can file an issue on the [bug tracker](https://github.com/gideontong/Amy/issues) or submit a [pull request](https://github.com/gideontong/Amy/pull). The team (mostly Gideon) will read through your pull rquest or issue and decide its importance and whether or not to merge any changes you have requested or proposed.

However, a bigger need that we want to fill is improving documentation and writing tutorials on how to start up and use this bot. Right now, files in the `/docs` folder of this repository are pretty sparse (this is true as of June 20, 2020 and has been true since the inception of this application, when it was originally in Python) and it would be good to expand on how to set up the bot and more in-depth beginner-friendly tutorials and guides to do such a thing.

Regardless, Amy is an open source project and we love to receive contributions from our community - which includes you! So there are many ways to contribute, and you can even help out by writing a blog post about Amy or trying her out so you can get an idea of what the feature set is and proposing new changes and features that could be added to her eventually as well.

## What We don't Need

Please don't use the issue tracker for support questions. Rather, join the [Dudes of 708 Discord server](https://discord.gg/WUGMTcZ) and try to get help from us there instead. In addition, we don't support toxicity or negativity, so if you wish to propogate those kinds of attitudes, we request that you do not get involved in this project. If you believe that such an attitude is present already, please email [Gideon Tong](https://gideontong.com) `<gideon [at] gideontong.com>` directly to take care of the matter.

## Ground Rules

This includes not just how to communicate with others (being respectful, considerate, etc) but also technical responsibilities (importance of testing, project dependencies, etc).

### Responsibilities

* Create issues for any major changes and enhancments that you wish to make. Discuss things transparently and get community feedback.
* Don't make major changes without input from the community first, unles you are recognized as a major developer.
* Keep feature versions as small as possible, preferrably one new feature per version.
* Be welcoming to newcomers and encourage diverse new contributors from all backgrounds.

## Your First Contribution

Learning how to make a pull request for the first time? You can learn how from this [free workshop series](https://egghead.io/series/how-to-contribute-to-an-open-source-project-on-github)! Still confused? Also check out this great resource from [First Timers Only](https://www.firsttimersonly.com/)!

There might be some language like "pull request" or even "verbose" as words you might not understand. If you can't figure it out from 3-5 minutes of Google searching, feel free to email [Gideon Tong](https://gideontong.com), join the [Dudes of 708 Discord server](https://discord.gg/WUGMTcZ), or even ask for help on common developer forums like Reddit or Stack Overflow.

### This Guide

Hey! You made it this far. Truth is, the contribution guide isn't finished yet, and we don't have a code of conduct. Maybe you could write one? In terms of this contribution guide, it would be good to write more tutorials on how to start your first pull request.
163 changes: 101 additions & 62 deletions docs/README.md
Original file line number Diff line number Diff line change
@@ -1,67 +1,106 @@
# Amy

[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com)
[![Build Status](https://travis-ci.com/gideontong/Amy.svg?branch=master)](https://travis-ci.com/gideontong/Amy) [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) ![HitCount](http://hits.dwyl.com/gideontong/Amy.svg) ![Latest Release](https://img.shields.io/github/v/release/gideontong/Amy) ![MIT License](https://img.shields.io/github/license/gideontong/Amy)

![Amy](https://i.imgur.com/q2YAmF5.png)

Some information is coming soon! Quick links: [setup process](setup) and [usage](usage).

## Upcoming Changes

* *Amy* no longer responds to you if you mention *VALORANT* in a link

## Upcoming Features

* *Amy* will now randomly troll you
* The probability for which *Amy* trolls you is configurable (currently 1%)
* What *Amy* trolls you with is configurable
* Added easter eggs to *Amy*
* Added collectible achievements
* Added collectible secret achievements
* Normally, *Amy* will give you the achievement, but there are some special achievements that *Kevin* awards
* Added a new custom about screen when you join a server
* Added a new custom welcome message when you join a server
* Added *Kevin*
* *Kevin* will randomly decide if it's time for you to die
* The probability for which you die by *Kevin* is configurable (currently 3%)

## Upcoming Commands

### Amy's Commands

* `!clear` will now clear recent chat history (**admins only**)
* `!welcome` triggers the new about screen manually (**admins only**)
* `!loadingscreentips` will show you 3 loading screen tips before disappearing (**admins only**)
* `!generateachievement (text)` will generate a test achievement (**admins only**)
* `!grantachievement (ID)` will grant yourself the achievement (**admins only**)
* `!revokeachievement (ID)` will revoke yourself from the achievement (**admins only**)
* `!tell` will force the bot to say something (**admins only**, or if you are Amy)
* `!tell (channel ID) (message)` will send a message to the channel with that specific ID
* `!tell (channel) (message)` will send a message to the channel mentioned
* If you do not specify a message and only a channel, Amy will send the name of the channel to the current channel
* Asking Kevin to send a message to a channel that does not exist will result in doing nothing
* `!printemoji (ID)` will repeat the emoji (**admins only**, or if you are Amy)
* Since this does not provide input validation, it's been reserved for admins until further notice
* `!qr (text, website, or phone number)` will generate a QR code
* `!website` takes you to [Amy's website](https://amyhelps.ml)
* `!joined` will tell you when you joined Discord
* `!docs` will point you to how to use Amy
* `!github` will take you to Amy's source code
* `!accountage` calculates how old your Discord account is
* `!howold` is an alias for `!accountage`, as well as command alias support
* `!howold`, `!accountage`, and `!joined` allow you to check someone else's age or join date by providing an argument
* `!insaneasylum` returns the infamous [Insane Asylum playlist](https://www.youtube.com/playlist?list=PL3q1l2_RQCr7fk0jyOmNwiUp9F6CaDyQd)
* `!youtube` takes you to the [Dudes of 708 YouTube channel](https://www.youtube.com/channel/UCdbqUWT3_0WgybqNuCX9uJA)
* `!rules` returns the list of rules for the server
* `!achievements` will show you your achievement progress
* `!ping` will tell you to ask GreustBot or Akov instead of Amy
* `!8ball` will now show you a 8-ball message after showing you some loading screen tips

### Kevin's Commands

* `?tell` will force Kevin to say something (**admins only**, or if you are Kevin)
* `?tell (channel ID) (message)` will send a message to the channel with that specific ID
* `?tell (channel) (message)` will send a message to the channel mentioned
* If you do not specify a message and only a channel, Kevin will send the name of the channel to the current channel
* Asking Kevin to send a message to a channel that does not exist will result in nothing happening
* `?tell` has feature parity with Amy's `!tell`
-----

🐱‍🏍 Amy is your personal assisstant, reimagined. In other words, Amy is a Discord bot for the [Dudes of 708 Discord server](https://discord.gg/WUGMTcZ). You can also visit our [YouTube homepage](https://www.youtube.com/channel/UCdbqUWT3_0WgybqNuCX9uJA) to see the kind of content that is relevant to the usage of Amy.

Amy builds upon over a decade of experience in social interactions at scale using various messaging platforms, with the current platform of choice being [Discord](https://discord.com) as the community comes together to build best-in-class ideas and practices for our own purposes.

Amy currently runs on [Gideon Tong's Server Network](https://me.gideontong.com) and has been given her own private subdomain space. If you would like to get involved in helping to shape the evolution of not just Amy but also future smart personal assisstants, consider reading the [contributor's guide](CONTRIBUTING.md) to get started.

-----

## Table of Contents

* **README**
* [Contributor's Guide](CONTRIBUTING.md)
* [Security Disclosures](SECURITY.md)
* [Changelog](CHANGELOG.md)
* [Getting Started](usage/README.md)
* [Getting Started for Developers](setup/README.md)
* [Achievements](achievements/README.md)
* [Data Model](storage/README.md)
* [Backups](storage/BACKUP.md)

-----

## Features

* Custom welcome, about, join, and help messages tailored to communities
* Utility commands to find out user information
* Moderation commands to help moderators manage a community and find out user details
* Wipe recent channel history
* Control and manage announcements
* Easter eggs and collectible achievements to create friendly competition between memebers of a community
* Intelligently respond to certain users
* Calls members out when they delete a spicy message (like an image)
* Randomly prank users of a Discord server
* All values, variables, and settings are admin-configurable
* Advanced permissions system with clear hierarchy and inhereitance
* Multiple bot instances controlled via one dashboard
* Automatic multi-process load balancing without dependencies

Amy is in active development, and if you have a feature request, simply fill out an [issue](https://github.com/gideontong/Amy/issues) and we will get to it as soon as possible.

### Achievements

![Achievements](https://i.imgur.com/2k0UDC2.png)

Amy supports custom achievements, which you can add your own instance of the bot (if you're running a custom instance for a private server), and soon will support admin-configurable achievements as well as default achievements that can be enabled globally (across servers) as well as only within a server.

## Getting Started

To get started, simply clone this repository to your hard drive. You'll need [Node 12.x](https://nodejs.org) or another JS code interpreter. Assuming you have Node installed, simply type

```bash
npm install --production
```

and while Node grabs the dependencies for you, move the file in `config/secrets-blank.json` to `config/secrets.json` and replace `token` with your [Discord API key](https://discord.com/developers/applications). Then start the application with

```bash
npm start
```

### Developers

If you're a developer and would like to get started, see the [setup guide](setup/README.md).

## Support

If you need support, you can start with reference guides and Google searches.

That said, if you have questions, feel free to [reach out to me](mailto:[email protected]) if you have any questions.

## Contributing

There are many ways you can contribute to the project, and we greatly appreicate all the work you want to put into helping me making Amy better! For example:

* [Submit bugs and feature requests](https://github.com/gideontong/Amy/issues), and if you see a bug report, you can help verify it by testing it as well.
* Review the documentation (*this page and more!*), then make a [pull request](https://github.com/gideontong/Amy/pulls) for anything from typos to new content.
* Make comments on upcoming [changes to the source code](https://github.com/gideontong/Amy/pulls?q=is%3Apr+is%3Aopen+sort%3Aupdated-desc).
* Contribute to writing more comprehensive [unit tests](https://github.com/gideontong/Amy/tree/master/tests).

If you'd like to contribute directly to the code base, see the [contributor's guide](CONTRIBUTING.md) before getting started. But thank you so much if you'd like to contribute! Just submit a [pull request](https://github.com/gideontong/Amy/pulls), as I review pull requests thoroughly and would love to see what you can cook up. If you want to just submit an idea instead, feel free to submit an [issue](https://github.com/gideontong/Amy/issues) instead.

### Feedback

If you have any feedback, feel free to take this opportunity to become a contributor and open an [issue](https://github.com/gideontong/Amy/issues). Additionally, you can email the maintainer [Gideon Tong](https://gideontong.com) at [[email protected]](mailto:[email protected]).

### Maintainers

Amy is maintained by [Gideon Tong](https://gideontong.com), whom you can contact by email at [[email protected]](mailto:[email protected]) if you have any private concerns, security disclosures, or would like professional support. If you feel that you have a security disclosure and would like an encrypted form of transport, you may reach out to me with the PGP key listed in the [security page](SECURITY.md) of this repository.

#### Special Thanks

Contributions and feedback from [Amy Nguyen](https://www.github.com/amytnguyen01/), [Max Buydakov](https://github.com/mbuyd), [Kevin Stubbings](https://github.com/Kwstubbs), [Brian Lam](https://github.com/brilam8), [Leo Zhang](https://github.com/Leo10250), and [Jesus Castillo](https://github.com/oscillatingneutrino) have been implemented into this project.

Their contributions can be found in the contributor's graph, and range from finding typos in strings to creating feature request issues. Special thanks to Amy Nguyen for allowing her namesake to be the inspiration of this project.

### Licensing

**Amy** is licensed under the MIT License and is copyrighted by &copy; Gideon Tong 2019-2020. She depends on the [Discord.js](https://discord.js.org), [node-qrcode](https://github.com/soldair/node-qrcode), [node-canvas](https://github.com/Automattic/node-canvas), and [log4js](https://github.com/log4js-node/log4js-node) Node packages, which are both licensed under the Apache-2.0 License.
59 changes: 59 additions & 0 deletions docs/SECURITY.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
# Security Policy

## Supported Versions

The following table shows which versions still recieve security updates. As always, the latest version will also recieve feature updates.

| Version | Supported |
| ------- | ------------------ |
| 2.0.x | :white_check_mark: |
| 1.3.x | :white_check_mark: |
| < 1.2 | :x: |

As 1.3.x is considered end of life, it will no longer recieve feature updates. However, additional security patches will be added as they are reported.

If you are looking to deploy, deploy the latest build of version 1.3.x with the expectation to deploy 2.0.x when it releases. They will be both backwards and forwards compatible in configuration and data storage, as the version jump is due to a large addition in features. Reverting versions without backup will not result in failure to run the software, but it may cause sluggish performance or console.log stdout spam.

## Reporting a Vulnerability

Use this section to tell people how to report a vulnerability.

If you find a vulnerability, feel free to use the [issue tracker](https://github.com/gideontong/Amy/issues) to report a bug. If it is a severe vulnerability that may allow something like RCE (remote code execution), email it to me at [[email protected]](mailto:[email protected]) instead. If you wish you encrypt your emails, you can reach me at [[email protected]]([email protected]).

Sign your emails with the following key:

```bash
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: OpenPGP.js v4.10.4
Comment: https://openpgpjs.org

xsBNBFygFKIBCAC5APtHaFysyyybjWB5NF/4qW7o2dA7ClxgpaXY+lk6gfJ8
ZR72MvlRcHztUs3oaOZdMRwFZLplqFzCLnpWOTnqCE9tLUhhxqUpe20SYjz8
hhnTSZknlydqICJygtFd283SM19q2FCgO4QGYvfWKwktah3r4yWu0hHR2z1f
V1vPnCKm6Tj3u9ZuslCHMTHpUWf47+hCSw4KjkIrdFFpD3hpb+zGTd1aRAS+
Nx9QBnqSxRS/JfLFqe3LDj9w/LsJA29r9FkRng8cAsN+m39wst4C06Xv8nOI
Ob6ALUP0vyu5amd1ImU9jl4pOc0gkj8ZOizVPl6D3+l8C43bFD4Kn7ajABEB
AAHNNyJnaWRlb250b25nQHByb3Rvbm1haWwuY29tIiA8Z2lkZW9udG9uZ0Bw
cm90b25tYWlsLmNvbT7CwHUEEAEIAB8FAlygFKIGCwkHCAMCBBUICgIDFgIB
AhkBAhsDAh4BAAoJEFxccyogf+mfZK0H/RcSW8el77DJpSNlin0hTCrZeoLq
vikbFqIGNhSURUloYGrFrcOaMzMSblbqxyZ2bzm00zrvTTplo+UW7DdctaKE
p2dlKFZMvIeEi4cAooXYYAKoD9qIMEnTbSD+wMp9qOE+29hO1axT2unXiO4Q
Z1zynV6YpxoxE0RFTnO4mh5E960hn8RpyDJMm6ReJ4MvXcCXkpSP8y3FvZtl
AHh5SmEwaAJoOBu0DBAwo821CaFEh2vtDdTQsEA2AxKXgen7ZK0h4X6czeAp
s1X686XqE+piUNfYHNw5XP4b8aXskTmOeiSLPP8oHvuty4k+7EBJbYCbyPhS
PRgK2M6ulnk5A/jOwE0EXKAUogEIAJ1TDFHi2Jo5N64W9iLpghv5g4rV1jSf
08STsJpnnCzym7TXwk3wbdPnv0+1swjm5eEdfY8ruaeJXbzGlI+tYUFmhneQ
6xLSDFeF5yaTMEKIjjF2pqXT2oyJNwhDVX6LJiv5quIqfVKLRBPPcE6OsQuq
9SOt2P7pTwgPn0XyvuGkz7Qon0fzZ6G5c7h78sDHsfQPNvKVZnT9nDG7E5bM
JzB5qQ3/e1Zeqh2o64bgzbEhBqgQ50xag3TYEKKaUWiLsVxnT8lgxq1U/Mdg
ko3gofwE6fRJUXtgvLE1AGKF0Fh64ZJwUTNKHpOARiEBmhtjhLNn3YefaYQM
XIerYh44rFMAEQEAAcLAXwQYAQgACQUCXKAUogIbDAAKCRBcXHMqIH/pny0f
B/9YvF167tL41NiUtZYJpJKIVXcNC2r9jKALHxV+ji8Ylh3wIiJxs4+72m/5
Svqtp2ae9DGCdHeRhNQaBON/cCxNhSd0SLH+POhPUwuNPAtKDdoJRSdhmdcB
WtS+XYB4kcsYnH5c4Hyp+SphlyS4jIcI1nigGbwhbhXbHtygZeu6CYVTkw53
McwC/rfGf9cjYE4hvC00gSw5zAUzMc2F7mLj17HfYfxHmOl3NZ9yKmyIwCaH
nWIhHVlnDLomLffiI1amPMRqbM6PG+BZHbtGiRCG4wUIZ//ib3DnS0qNd94r
eNhxckVFZD2iieJ0oCgEHA6t0vp3GZ+jblbfMQNzsyID
=p6bO
-----END PGP PUBLIC KEY BLOCK-----
```
Loading

0 comments on commit d3b6e08

Please sign in to comment.