abby-bot is a private work-in-progress multi-purpose discord bot with the main focus tied towards modmail. Although modmail will be the primary focus of the bot, it will still contain many features in the future, and will serve for moderation, giveaways, the ability to post youtube videos, twitch streams & twitter posts, and so on.
Also please read the note towards the bottom in case you are wondering whether you can make contributions to help me complete the bot, or if you have an issue with how the code is (whether it's impractical/inefficient).
(PS: these are features to come, and have not yet been implemented as the bot is WIP)
Modmail will allow members to DM the bot when they require support in a server, and having a thread opened inside a discord where the person who requires support interacts to staff/support by DM'ing the bot while staff/support send their replies via the thread opened. It will be simple to set up, contain a lot of configuration for the staff to customise how threads are set up, how they are closed, and how they are managed while open.
abby-bot will have a lot of moderation commands with many possible arguments, making it easy for staff and moderators to be able to have an easier life when handling with moderation, there'll be a lot of configuration such as setting up mute roles and mod roles. You will also be able to determine where modlogs should be posted dynamically.
Users will be able to dynamically set up giveaways, being able to choose the amount of winners that are picked out. I may possibly decide to make benefits, in which people with set roles will be able to have double/triple their entries, allowing them to have higher chances of winner with the ability to configure which roles these will apply to.
This is a feature I believe will take a while but will be very much worth it, abby-bot will post: Youtube, Twitch & Twitter posts a while after specific channels, streamers or users produce content. As to who will be able to be configured and will dynamically use APIs to check whenever a post is made and update it in a determined discord text channel.
Users will be able to enable automoderation to make server moderating easier, this will handle: everyone pings, mass-mentioning, invite links/possible promoting, maximum lines, maximum emojis, spam
There are many, many features that will also be implemented, are work in progress or have been implemented such as: starboard, reminders, images, game data (e.g. Apex Legends, League of Legends), economy, minigames, etc. This will take a long time to make but is very well a nice project!
These are some simple requirements you will need in order to host the bot, however I will not provide a guide as to how to do so.
- node.js v16.7 or greater is recommended
- typescript
- discord-akairo
# You can install this by running "npm i discord-akairo/discord-akairo in your terminal"
- Discord.js latest version is recommended
# You can install this by running "npm i discord.js in your terminal"
- axios
# You can install this by running "npm i axios in your terminal"
- dotenv
# You can install this by running "npm i dotenv in your terminal"
- @discordjs/opus
- discord-music-player
- glob
- moment (very useful for working with dates and formatting date strings)
- mongoose
Optionally:
- canvas
- jest (dependency, for unit testing)
- jimp
- node-emoji
- node-myanimelist
- ripemd160 (for hashing)
- ts-jest (dependency, for unit testing)
- winston (for logging)
Due to the massive list of commands, I have moved the location of commands towards the bottom, you can quickly be redirected here
For those that wish to contribute to the bot, it'd be greatly appreciated. If you wish to contribute then please proceed with the following steps:
- Fork this repository
- Create a new branch hosting the changes
git checkout -b new-branch
- After making updates to this branch, push it to your forked repository
git push remote new-branch
Submit a pull request
with a summary of the changes/features added
abby-bot ©️ miau Solely authored and maintained by miau.
I shall permit this bot's code to be used to study & learn from. However, to host the bot, you will have to figure out how to recreate certain files, host the bot and make a database yourself as I will not directly support self-hosting. You can not just directly dump this repository in order to make your bot, you will need to have decent understanding with discord-akairo (read the docs) & node.js.
I would like to give credit to iCrawl as the case system is influenced by him (specifically Case.ts, MuteManager.ts, Cases.ts & ModUtil.ts). I was thinking for quite a long while as to how to approach this system for the most efficient way to get, display & store moderation cases/logs. He's quite the genius.
I would like to apologise if my code is not ideal, or great. I am currently learning TypeScript. I appreciate all contributions, whether it is for addition of features of to clean existing code. If it is to clean code please specify the name of the file and the line it is meant to start from.
Here are a list of the current commands (only those that are functional and excludes owner & developer):
- Bite
- Blush
- Bonk
- Bully
- Cringe
- Cry
- Cuddle
- Dance
- Happy
- HighFive
- HoldHand
- Hug
- Kill
- Kiss
- Lick
- Nom
- Pat
- Poke
- Slap
- Smile
- Smug
- Wave
- Wink
- Yeet
- Anime
- AnimeQuote
- Manga
- Neko
- Waifu
- AntiEveryone
- AntiInvite
- AntiSpam
- AntiSpamWhitelist
- MaxLines
- MaxMentions
- AddEmote
- ChannelBlacklist
- ChannelWhitelist
- EditGiveaway
- EndGiveaway
- Giveaway
- Ignore
- LeaveMessage
- RemoveEmote
- ResetCount
- SetAutoRole
- SetBotNotice
- SetCountChannel
- SetModmailChannel
- SetPrefix
- SetStaffRole
- SetSuggestChannel
- SetSupportRole
- Setup
- SetWarnThreshold
- SetWelcomeChannel
- Unsetup
- UserBlacklist
- UserWhitelist
- WelcomeMessage
- 8ball
- Coinflip
- Gayrate
- Russian Roulette (rr)
- Say
- Ship
- ApexLegends
- GameInfo
- About
- Changelog
- Feedback
- Help
- MemberCount
- Report
- Snipe
- Suggest
- Bunny
- Cat
- Dog
- Duck
- SetAllLogs
- SetChannelLog
- SetGuildLog
- SetMessageLog
- SetModlog
- SetRoleLog
- SetUserLog
- Ban
- Banlist
- Cases
- Clean
- CreateRole
- DeleteRole
- Fixname
- Kick
- ManageRole
- Massban
- Mute
- Pardon
- Prune
- Reason
- SetMuteRole
- SetNickname
- SetRole
- Slowmode
- Softban
- Unban
- Unmute
- Voiceban
- Warn
- Contact
- StartThread
- ClearQueue
- Connect
- Disconnect
- Loop
- NowPlaying
- Pause
- Play
- Queue
- Resume
- Search
- Seek
- SetDJRole
- Shuffle
- Skip
- Volume
- AddIgnoredRole
- AddReactRole
- AddRequiredRole
- CreateRoleGroup
- DeleteRoleGroup
- ManageRoleGroup
- RemoveIgnoreRole
- RemoveReactRole
- RemoveRequiredRole
- RoleGroups
- RoleMenu
- FixStar
- ResetStars
- Star
- StarboardBlacklist
- StarboardSetChannel
- StarboardThreshold
- StarboardWhitelist
- StarConfig
- StarEmoji
- Unstar
- AddStreamer
- AddStreamerPing
- RemoveStreamer
- RemoveStreamerPing
- StreamerPings
- Streamers
- TwitchFeedChannel
- TwitchSetMessage
Note: TwitchSetMessage is PER streamer, same with AddStreamerPing for customisability and for it to be more dynamic.
- AddTwitterUser
- Avatar
- Donators
- GuildIcon
- Mods
- Ping
- Roles
- Userinfo
- SetUnverifiedRole
- SetVerificationChannel
- SetVerifiedRole
- Verify