4miau / Abigail-Williams

A cute, multi-purpose discord bot written in TypeScript, using the discord-akairo framework.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Abigail Williams (AKA. abby-bot)

Description

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).

Features

(PS: these are features to come, and have not yet been implemented as the bot is WIP)

Modmail

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.

Moderation

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.

Giveaways

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.

Platform Promotion

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.

Automoderation

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!

Requirements

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)

Commands

Due to the massive list of commands, I have moved the location of commands towards the bottom, you can quickly be redirected here

Contributing

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

⬆ Back to the top

Author

Hi there!

abby-bot ©️ miau Solely authored and maintained by miau.

Note

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.

List of Commands

Here are a list of the current commands (only those that are functional and excludes owner & developer):

Action:

  • Bite
  • Blush
  • Bonk
  • Bully
  • Cringe
  • Cry
  • Cuddle
  • Dance
  • Happy
  • HighFive
  • HoldHand
  • Hug
  • Kill
  • Kiss
  • Lick
  • Nom
  • Pat
  • Poke
  • Slap
  • Smile
  • Smug
  • Wave
  • Wink
  • Yeet

⬆ Back to Commands

Anime:

  • Anime
  • AnimeQuote
  • Manga
  • Neko
  • Waifu

⬆ Back to Commands

Automation:

  • AntiEveryone
  • AntiInvite
  • AntiSpam
  • AntiSpamWhitelist
  • MaxLines
  • MaxMentions

⬆ Back to Commands

Configuration:

  • 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

⬆ Back to Commands

Fun:

  • 8ball
  • Coinflip
  • Gayrate
  • Russian Roulette (rr)
  • Say
  • Ship

⬆ Back to Commands

Games:

  • ApexLegends
  • GameInfo

⬆ Back to Commands

General:

  • About
  • Changelog
  • Feedback
  • Help
  • MemberCount
  • Report
  • Snipe
  • Suggest

⬆ Back to Commands

Images:

  • Bunny
  • Cat
  • Dog
  • Duck

⬆ Back to Commands

Logging:

  • SetAllLogs
  • SetChannelLog
  • SetGuildLog
  • SetMessageLog
  • SetModlog
  • SetRoleLog
  • SetUserLog

⬆ Back to Commands

Moderation:

  • Ban
  • Banlist
  • Cases
  • Clean
  • CreateRole
  • DeleteRole
  • Fixname
  • Kick
  • ManageRole
  • Massban
  • Mute
  • Pardon
  • Prune
  • Reason
  • SetMuteRole
  • SetNickname
  • SetRole
  • Slowmode
  • Softban
  • Unban
  • Unmute
  • Voiceban
  • Warn

⬆ Back to Commands

Modmail

  • Contact
  • StartThread

⬆ Back to Commands

Music

  • ClearQueue
  • Connect
  • Disconnect
  • Loop
  • NowPlaying
  • Pause
  • Play
  • Queue
  • Resume
  • Search
  • Seek
  • SetDJRole
  • Shuffle
  • Skip
  • Volume

⬆ Back to Commands

Reaction Roles

  • AddIgnoredRole
  • AddReactRole
  • AddRequiredRole
  • CreateRoleGroup
  • DeleteRoleGroup
  • ManageRoleGroup
  • RemoveIgnoreRole
  • RemoveReactRole
  • RemoveRequiredRole
  • RoleGroups
  • RoleMenu

⬆ Back to Commands

Starboard

  • FixStar
  • ResetStars
  • Star
  • StarboardBlacklist
  • StarboardSetChannel
  • StarboardThreshold
  • StarboardWhitelist
  • StarConfig
  • StarEmoji
  • Unstar

⬆ Back to Commands

Twitch

  • 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.

⬆ Back to Commands

Twitter

  • AddTwitterUser

⬆ Back to Commands

Utility

  • Avatar
  • Donators
  • GuildIcon
  • Mods
  • Ping
  • Roles
  • Userinfo

⬆ Back to Commands

Verification

  • SetUnverifiedRole
  • SetVerificationChannel
  • SetVerifiedRole
  • Verify

⬆ Back to Commands

About

A cute, multi-purpose discord bot written in TypeScript, using the discord-akairo framework.


Languages

Language:TypeScript 99.9%Language:Shell 0.1%