Skip to content

AnalogFeelings/SammBot

Repository files navigation

SammBot Logo

GitHub issues GitHub pull requests GitHub Workflow Status (with branch) GitHub GitHub commit activity GitHub Repo stars Mastodon Follow

Samm-Bot is a free and open-source Discord bot that I began developing around 2020 for fun.
Its source code was private, was written in TypeScript, and was very feature-lacking.

In 2021, I decided to rewrite it in .NET, make it open-source and much more feature rich. Nowadays, it focuses on being useful, with features such as moderation and fun commands.

My main motivation is because currently, most large bots are owned by money-hungry people who like to shove Premium ads everywhere they can.
I wanted to make a free and open-source bot that people could rely on for simple server-keeping tasks such as warnings, logging and more.

Important

Currently, the bot is undergoing an important rewrite for modularization.
Progress can be tracked in here.

🏆 Maintainers

This is a list of all the people who maintain Samm-Bot's development.

  • 💾 Analog Feelings - Creator and lead developer.

📚 Features

  • 💾 Bot Administration Module: Allows the bot's owner to manage the bot remotely.
  • ⚙️ Server Settings Module: Allows you to set server-specific settings, like logging, welcome messages, etc...
  • 🧑‍⚖️ Moderation Module: Allows you to kick, ban, mute, or bulk delete messages.
  • 🏷️ Tags Module: Allows users to create tags that make Samm-Bot reply with a custom message when used with the "tags get" command.
  • 🎲 Fun Module: Hugging, patting, asking the magic 8-ball, and more!
  • ℹ️ Information Module: Shows information about the bot and can also show information about a user or server.
  • 🎰 Random Module: Retrieve random content from the cat, dog, fox or duck APIs.
  • 🔧 Utils Module: Allows you to view RGB or HEX colors or get a user's avatar.

📦 Building

The .NET toolset will automatically pull all the required NuGet packages on build.
Samm-Bot has currently been tested on x86-64 and aarch64.

For Linux and macOS users, this tiny script should make it easier for you to pull and build automatically.

Note

The script linked above requires Bash.

💿 Database Setup

Here is a small TL;DR on how to update the database in Samm-Bot.
Knowing how EntityFramework works is still recommended for this project.

✳️ Creating Migrations

Grab the command line, cd to the SammBot.Bot folder, and execute this command:

dotnet ef migrations add <MigrationName>

This will let you modify the structure of the database's tables.

✅ Applying Migrations

Grab the command line, cd to the SammBot.Bot folder, and execute this command:

dotnet ef database update

This will apply the latest migration to the local database, or create a database if one doesn't already exist.

🧑‍⚖️ Code Style Guidelines

Please read the style guidelines before creating a pull request.
Your pull request won't be merged until the code is up to the standards.

Adding an automatic .editorconfig file to enforce these is of low priority right now, so please read the file thoroughly.

⚖️ License

© Copyright 2021-2024 Analog Feelings.
Licensed under the GPL v3.0 license.

✨ Special Thanks

This is a list of companies or projects who have been very helpful for the development of Samm-Bot.
If your project or company has been very influential in the development of Samm-Bot, it will be listed here.

Logo Message
JetBrains Thanks to JetBrains for providing an OSS license for their products!