diff --git a/Octobot.csproj b/Octobot.csproj
index bdfb46a..4b2636c 100644
--- a/Octobot.csproj
+++ b/Octobot.csproj
@@ -5,17 +5,17 @@
net8.0
enable
enable
- 2.0.0
-
Octobot
- Octol1ttle, mctaylors, neroduckale
+ 1.0.0
+ Octobot Stealth
+ TeamInklings, TeamOctolings
AGPLv3
- https://github.com/TeamOctolings/Octobot
- https://github.com/TeamOctolings/Octobot/blob/master/LICENSE
- https://github.com/TeamOctolings/Octobot
+ https://git.mctaylors.ru/TeamInklings/OctobotStealth
+ https://git.mctaylors.ru/TeamInklings/OctobotStealth/src/branch/stealth/LICENSE
+ https://git.mctaylors.ru/TeamInklings/OctobotStealth
github
- TeamOctolings
+ TeamInklings
en
- A general-purpose Discord bot for moderation written in C#
+ A fork of multiple-purpose Discord bot written in Remora.Discord
docs/octobot.ico
false
diff --git a/docs/CODE_OF_CONDUCT.md b/docs/CODE_OF_CONDUCT.md
deleted file mode 100644
index 0b5e0cd..0000000
--- a/docs/CODE_OF_CONDUCT.md
+++ /dev/null
@@ -1,128 +0,0 @@
-# Contributor Covenant Code of Conduct
-
-## Our Pledge
-
-We as members, contributors, and leaders pledge to make participation in our
-community a harassment-free experience for everyone, regardless of age, body
-size, visible or invisible disability, ethnicity, sex characteristics, gender
-identity and expression, level of experience, education, socio-economic status,
-nationality, personal appearance, race, religion, or sexual identity
-and orientation.
-
-We pledge to act and interact in ways that contribute to an open, welcoming,
-diverse, inclusive, and healthy community.
-
-## Our Standards
-
-Examples of behavior that contributes to a positive environment for our
-community include:
-
-* Demonstrating empathy and kindness toward other people
-* Being respectful of differing opinions, viewpoints, and experiences
-* Giving and gracefully accepting constructive feedback
-* Accepting responsibility and apologizing to those affected by our mistakes,
- and learning from the experience
-* Focusing on what is best not just for us as individuals, but for the
- overall community
-
-Examples of unacceptable behavior include:
-
-* The use of sexualized language or imagery, and sexual attention or
- advances of any kind
-* Trolling, insulting or derogatory comments, and personal or political attacks
-* Public or private harassment
-* Publishing others' private information, such as a physical or email
- address, without their explicit permission
-* Other conduct which could reasonably be considered inappropriate in a
- professional setting
-
-## Enforcement Responsibilities
-
-Community leaders are responsible for clarifying and enforcing our standards of
-acceptable behavior and will take appropriate and fair corrective action in
-response to any behavior that they deem inappropriate, threatening, offensive,
-or harmful.
-
-Community leaders have the right and responsibility to remove, edit, or reject
-comments, commits, code, wiki edits, issues, and other contributions that are
-not aligned to this Code of Conduct, and will communicate reasons for moderation
-decisions when appropriate.
-
-## Scope
-
-This Code of Conduct applies within all community spaces, and also applies when
-an individual is officially representing the community in public spaces.
-Examples of representing our community include using an official e-mail address,
-posting via an official social media account, or acting as an appointed
-representative at an online or offline event.
-
-## Enforcement
-
-Instances of abusive, harassing, or otherwise unacceptable behavior may be
-reported to the community leaders responsible for enforcement via the "Report Content" feature or via email at
-l1ttleofficial@outlook.com.
-All complaints will be reviewed and investigated promptly and fairly.
-
-All community leaders are obligated to respect the privacy and security of the
-reporter of any incident.
-
-## Enforcement Guidelines
-
-Community leaders will follow these Community Impact Guidelines in determining
-the consequences for any action they deem in violation of this Code of Conduct:
-
-### 1. Correction
-
-**Community Impact**: Use of inappropriate language or other behavior deemed
-unprofessional or unwelcome in the community.
-
-**Consequence**: A private, written warning from community leaders, providing
-clarity around the nature of the violation and an explanation of why the
-behavior was inappropriate. A public apology may be requested.
-
-### 2. Warning
-
-**Community Impact**: A violation through a single incident or series
-of actions.
-
-**Consequence**: A warning with consequences for continued behavior. No
-interaction with the people involved, including unsolicited interaction with
-those enforcing the Code of Conduct, for a specified period of time. This
-includes avoiding interactions in community spaces as well as external channels
-like social media. Violating these terms may lead to a temporary or
-permanent ban.
-
-### 3. Temporary Ban
-
-**Community Impact**: A serious violation of community standards, including
-sustained inappropriate behavior.
-
-**Consequence**: A temporary ban from any sort of interaction or public
-communication with the community for a specified period of time. No public or
-private interaction with the people involved, including unsolicited interaction
-with those enforcing the Code of Conduct, is allowed during this period.
-Violating these terms may lead to a permanent ban.
-
-### 4. Permanent Ban
-
-**Community Impact**: Demonstrating a pattern of violation of community
-standards, including sustained inappropriate behavior, harassment of an
-individual, or aggression toward or disparagement of classes of individuals.
-
-**Consequence**: A permanent ban from any sort of public interaction within
-the community.
-
-## Attribution
-
-This Code of Conduct is adapted from the [Contributor Covenant][homepage],
-version 2.0, available at
-https://www.contributor-covenant.org/version/2/0/code_of_conduct.html.
-
-Community Impact Guidelines were inspired by [Mozilla's code of conduct
-enforcement ladder](https://github.com/mozilla/diversity).
-
-[homepage]: https://www.contributor-covenant.org
-
-For answers to common questions about this code of conduct, see the FAQ at
-https://www.contributor-covenant.org/faq. Translations are available at
-https://www.contributor-covenant.org/translations.
diff --git a/docs/CONTRIBUTING.md b/docs/CONTRIBUTING.md
deleted file mode 100644
index dc5a793..0000000
--- a/docs/CONTRIBUTING.md
+++ /dev/null
@@ -1,68 +0,0 @@
-# Contributing Guidelines
-
-Thank you for showing interest in the development of Octobot. We aim to provide a good collaborating environment for
-everyone involved, and as such have decided to list some of the most important things to keep in mind in the process.
-Before starting, please read our [Code of Conduct](CODE_OF_CONDUCT.md)
-
-## Reporting bugs
-
-A **bug** is a situation in which there is something clearly wrong with the bot. Examples of applicable bug reports are:
-
-- The bot doesn't reply to a command
-- The bot sends the same message twice
-- The bot takes a long time to a respond if I use this specific command
-- An embed the bot sent has incorrect information in it
-
-To track bug reports, we primarily use GitHub **issues**. When opening an issue, please keep in mind the following:
-
-- Before opening the issue, please search for any similar existing issues using the text search bar and the issue
- labels. This includes both open and closed issues (we may have already fixed something, but the fix hasn't yet been
- released).
-- When opening the issue, please fill out as much of the issue template as you can. In particular, please make sure to
- include console output and screenshots as much as possible.
-- We may ask you for follow-up information to reproduce or debug the problem. Please look out for this and provide
- follow-up info if we request it.
-
-## Submitting pull requests
-
-While pull requests from unaffiliated contributors are welcome, please note that the core team *may* be focused on
-internal issues that haven't been published to the issue tracker yet. Reviewing PRs is done on a best-effort basis, so
-please be aware that it may take a while before a core maintainer gets around to review your change.
-
-The [issue tracker](https://github.com/TeamOctolings/Octobot/issues) should provide plenty of issues to start with.
-Make sure to check that an issue you're planning to resolve does not already have people working on it and that there
-are no PRs associated with it
-
-In the case of simple issues, a direct PR is okay. However, if you decide to work on an existing issue which doesn't
-seem trivial, **please ask us first**. This way we can try to estimate if it is a good fit for you and provide the
-correct direction on how to address it.
-
-If you'd like to propose a subjective change to one of the UI/UX aspects of the bot, or there is a bigger task you'd
-like to work on, but there is no corresponding issue yet for it, **please open an issue first** to avoid wasted effort.
-
-Aside from the above, below is a brief checklist of things to watch out when you're preparing your code changes:
-
-- Make sure you're comfortable with the principles of object-oriented programming, the syntax of C\# and your
- development environment.
-- Make sure you are familiar with [git](https://git-scm.com/)
- and [the pull request workflow](https://help.github.com/en/github/collaborating-with-issues-and-pull-requests/proposing-changes-to-your-work-with-pull-requests).
-- Please do not make code changes via the GitHub web interface.
-- Please make sure your development environment respects the .editorconfig file present in the repository. Our code
- style differs from most C\# projects and is closer to something you see in Java projects.
-- Please test your changes. We expect most new features and bugfixes to be tested in an environment similar to
- production.
-
-After you're done with your changes and you wish to open the PR, please observe the following recommendations:
-
-- Please submit the pull request from
- a [topic branch](https://git-scm.com/book/en/v2/Git-Branching-Branching-Workflows#_topic_branch) (not `master`), and
- keep the *Allow edits from maintainers* check box selected, so that we can push fixes to your PR if necessary.
-- Please avoid pushing untested or incomplete code.
-- Please do not force-push or rebase unless we ask you to.
-- Please do not merge `master` continually if there are no conflicts to resolve. We will do this for you when the change
- is ready for merge.
-
-We are highly committed to quality when it comes to Octobot. This means that contributions from less experienced
-community members can take multiple rounds of review to get to a mergeable state. We try our utmost best to never
-conflate a person with the code they authored, and to keep the discussion focused on the code at all times. Please
-consider our comments and requests a learning experience.
diff --git a/docs/README.md b/docs/README.md
index 7056857..66128ca 100644
--- a/docs/README.md
+++ b/docs/README.md
@@ -2,11 +2,13 @@
-
+
-
+
-Veemo! I'm a general-purpose bot for moderation (formerly known as Boyfriend) written by [Team Octolings](https://github.com/TeamOctolings) in C# and Remora.Discord
+Veemo! I'm a multiple-purpose bot (formerly known as Boyfriend) written by [Team Octolings](https://github.com/TeamOctolings) and [Team Inklings](https://git.mctaylors.ru/TeamInklings) in C# and Remora.Discord
+
+> **Note** **[TeamOctolings/Octobot](https://github.com/TeamOctolings/Octobot) is still being maintained.** You probably won't need to use this fork.
## Features
@@ -19,36 +21,19 @@ Veemo! I'm a general-purpose bot for moderation (formerly known as Boyfriend) wr
*...a-a-and more!*
-## Building Octobot
+## Building Octobot Stealth
1. Install [.NET 8 SDK](https://dotnet.microsoft.com/en-us/download/dotnet/8.0)
2. Go to the [Discord Developer Portal](https://discord.com/developers), create a new application and get a bot token. Don't forget to also enable all intents!
-3. Clone this repository and open `Octobot` folder.
+3. Clone this repository and open `OctobotStealth` folder.
```
-git clone https://github.com/TeamOctolings/Octobot
+git clone https://github.com/TeamInklings/OctobotStealth
cd Octobot
```
-4. Run Octobot using `dotnet` with `BOT_TOKEN` variable.
+4. Run Octobot Stealth using `dotnet` with `BOT_TOKEN` variable.
```
dotnet run BOT_TOKEN='ENTER_TOKEN_HERE'
```
-## Contributing
-
-When it comes to contributing to the project, the two main things you can do to help out are reporting issues and
-submitting pull requests. Please refer to the [contributing guidelines](CONTRIBUTING.md) to understand how to help in
-the most effective way possible.
-
-## Special Thanks
-
-![JetBrains Logo (Main) logo](https://resources.jetbrains.com/storage/products/company/brand/logos/jb_beam.svg)
-
-[JetBrains](https://www.jetbrains.com/), creators of [ReSharper](https://www.jetbrains.com/resharper)
-and [Rider](https://www.jetbrains.com/rider), supports Octobot with one of
-their [Open Source Licenses](https://jb.gg/OpenSourceSupport).
-Rider is the recommended IDE when working with Octobot, and everyone on the Octobot team uses it.
-Additionally, ReSharper command-line tools made by JetBrains are used for status checks on pull requests to ensure code
-quality even when not using ReSharper or Rider.
-
#
Not an official Splatoon™ product. We are in no way affiliated with or endorsed by Nintendo Company, or other rightsholders.
diff --git a/docs/octobot-banner.png b/docs/octobot-banner.png
index 2ab5f5b..9513df2 100644
Binary files a/docs/octobot-banner.png and b/docs/octobot-banner.png differ
diff --git a/docs/octobot.ico b/docs/octobot.ico
index 147b716..676fe0d 100644
Binary files a/docs/octobot.ico and b/docs/octobot.ico differ
diff --git a/locale/Messages.resx b/locale/Messages.resx
index 47e7d4f..a0cbcfb 100644
--- a/locale/Messages.resx
+++ b/locale/Messages.resx
@@ -405,15 +405,6 @@
About {0}
-
- developer & designer, Octobot's Wiki creator
-
-
- main developer
-
-
- developer
-
Reminder for {0} created
@@ -681,4 +672,7 @@
Moderator role
+
+ Issue reports are disabled
+
diff --git a/locale/Messages.ru.resx b/locale/Messages.ru.resx
index 2eef257..4aa7a35 100644
--- a/locale/Messages.ru.resx
+++ b/locale/Messages.ru.resx
@@ -405,15 +405,6 @@
О боте {0}
-
- разработчик
-
-
- основной разработчик
-
-
- разработчик и дизайнер, создатель Octobot's Wiki
-
Напоминание для {0} создано
@@ -681,4 +672,7 @@
Роль модератора
+
+ Сообщения о проблемах отключены
+
diff --git a/src/BuildInfo.cs b/src/BuildInfo.cs
index 2eb6059..34d511b 100644
--- a/src/BuildInfo.cs
+++ b/src/BuildInfo.cs
@@ -2,7 +2,7 @@
public static class BuildInfo
{
- public const string RepositoryUrl = "https://github.com/TeamOctolings/Octobot";
+ public const string RepositoryUrl = "https://git.mctaylors.ru/TeamInklings/OctobotStealth";
public const string IssuesUrl = $"{RepositoryUrl}/issues";
diff --git a/src/Commands/AboutCommandGroup.cs b/src/Commands/AboutCommandGroup.cs
index b8c6d0f..8f24e84 100644
--- a/src/Commands/AboutCommandGroup.cs
+++ b/src/Commands/AboutCommandGroup.cs
@@ -27,10 +27,14 @@ namespace Octobot.Commands;
[UsedImplicitly]
public class AboutCommandGroup : CommandGroup
{
- private static readonly (string Username, Snowflake Id)[] Developers =
+ private static readonly (string Username, Snowflake Id)[] TeamInklings =
+ [
+ ("mctaylors", new Snowflake(326642240229474304))
+ ];
+
+ private static readonly (string Username, Snowflake Id)[] TeamOctolings =
[
("Octol1ttle", new Snowflake(504343489664909322)),
- ("mctaylors", new Snowflake(326642240229474304)),
("neroduckale", new Snowflake(474943797063843851))
];
@@ -61,7 +65,7 @@ public class AboutCommandGroup : CommandGroup
[Command("about")]
[DiscordDefaultDMPermission(false)]
[RequireContext(ChannelContext.Guild)]
- [Description("Shows Octobot's developers")]
+ [Description("Shows Octobot Stealth's developers")]
[UsedImplicitly]
public async Task ExecuteAboutAsync()
{
@@ -84,8 +88,22 @@ public class AboutCommandGroup : CommandGroup
private async Task SendAboutBotAsync(IUser bot, Snowflake guildId, CancellationToken ct = default)
{
- var builder = new StringBuilder().Append("### ").AppendLine(Messages.AboutTitleDevelopers);
- foreach (var dev in Developers)
+ var builder = new StringBuilder().Append("### ").AppendLine(Messages.AboutTitleDevelopers)
+ .AppendLine(Markdown.Bold(Markdown.Hyperlink("TeamInklings", "https://git.mctaylors.ru/TeamInklings")));
+ foreach (var dev in TeamInklings)
+ {
+ var guildMemberResult = await _guildApi.GetGuildMemberAsync(
+ guildId, dev.Id, ct);
+ var tag = guildMemberResult.IsSuccess
+ ? $"<@{dev.Id}>"
+ : Markdown.Hyperlink($"@{dev.Username}", $"https://git.mctaylors.ru/{dev.Username}");
+
+ builder.Append(tag).Append(' ');
+ }
+
+ builder.AppendDoubleLine().AppendLine(Markdown.Bold(
+ Markdown.Hyperlink("TeamOctolings", "https://github.com/TeamOctolings")));
+ foreach (var dev in TeamOctolings)
{
var guildMemberResult = await _guildApi.GetGuildMemberAsync(
guildId, dev.Id, ct);
@@ -93,14 +111,14 @@ public class AboutCommandGroup : CommandGroup
? $"<@{dev.Id}>"
: Markdown.Hyperlink($"@{dev.Username}", $"https://github.com/{dev.Username}");
- builder.AppendBulletPointLine($"{tag} — {$"AboutDeveloper@{dev.Username}".Localized()}");
+ builder.Append(tag).Append(' ');
}
var embed = new EmbedBuilder()
.WithSmallTitle(string.Format(Messages.AboutBot, bot.Username), bot)
.WithDescription(builder.ToString())
.WithColour(ColorsList.Cyan)
- .WithImageUrl("https://raw.githubusercontent.com/TeamOctolings/Octobot/master/docs/octobot-banner.png")
+ .WithImageUrl("https://git.mctaylors.ru/TeamInklings/OctobotStealth/media/branch/HEAD/docs/octobot-banner.png")
.WithFooter(string.Format(Messages.Version, BuildInfo.Version))
.Build();
@@ -122,10 +140,10 @@ public class AboutCommandGroup : CommandGroup
ButtonComponentStyle.Link,
BuildInfo.IsDirty
? Messages.ButtonDirty
- : Messages.ButtonReportIssue,
+ : Messages.ButtonReportIssueDisabled,
new PartialEmoji(Name: "\u26a0\ufe0f"), // 'WARNING SIGN' (U+26A0)
URL: BuildInfo.IssuesUrl,
- IsDisabled: BuildInfo.IsDirty
+ IsDisabled: true
);
return await _feedback.SendContextualEmbedResultAsync(embed,
diff --git a/src/Commands/Events/ErrorLoggingPostExecutionEvent.cs b/src/Commands/Events/ErrorLoggingPostExecutionEvent.cs
index 551c2d0..c7750f1 100644
--- a/src/Commands/Events/ErrorLoggingPostExecutionEvent.cs
+++ b/src/Commands/Events/ErrorLoggingPostExecutionEvent.cs
@@ -72,10 +72,10 @@ public class ErrorLoggingPostExecutionEvent : IPostExecutionEvent
ButtonComponentStyle.Link,
BuildInfo.IsDirty
? Messages.ButtonDirty
- : Messages.ButtonReportIssue,
+ : Messages.ButtonReportIssueDisabled,
new PartialEmoji(Name: "\u26a0\ufe0f"), // 'WARNING SIGN' (U+26A0)
URL: BuildInfo.IssuesUrl,
- IsDisabled: BuildInfo.IsDirty
+ IsDisabled: true
);
return ResultExtensions.FromError(await _feedback.SendContextualEmbedResultAsync(embed,
diff --git a/src/Extensions/StringBuilderExtensions.cs b/src/Extensions/StringBuilderExtensions.cs
index ddd24a3..3b81cde 100644
--- a/src/Extensions/StringBuilderExtensions.cs
+++ b/src/Extensions/StringBuilderExtensions.cs
@@ -59,4 +59,18 @@ public static class StringBuilderExtensions
{
return builder.Append(" - ").AppendLine(value);
}
+
+ ///
+ /// Appends the input string with two default line terminators
+ /// to the end of specified object.
+ ///
+ /// The object.
+ /// The string to append with two default line terminators.
+ ///
+ /// The builder with the appended string with two default line terminators at the end.
+ ///
+ public static StringBuilder AppendDoubleLine(this StringBuilder builder, string? value = null)
+ {
+ return builder.AppendLine().AppendLine(value);
+ }
}
diff --git a/src/Messages.Designer.cs b/src/Messages.Designer.cs
index 2910bae..b6eb458 100644
--- a/src/Messages.Designer.cs
+++ b/src/Messages.Designer.cs
@@ -642,24 +642,6 @@ namespace Octobot {
}
}
- internal static string AboutDeveloper_mctaylors {
- get {
- return ResourceManager.GetString("AboutDeveloper@mctaylors", resourceCulture);
- }
- }
-
- internal static string AboutDeveloper_Octol1ttle {
- get {
- return ResourceManager.GetString("AboutDeveloper@Octol1ttle", resourceCulture);
- }
- }
-
- internal static string AboutDeveloper_neroduckale {
- get {
- return ResourceManager.GetString("AboutDeveloper@neroduckale", resourceCulture);
- }
- }
-
internal static string ReminderCreated {
get {
return ResourceManager.GetString("ReminderCreated", resourceCulture);
@@ -1216,5 +1198,13 @@ namespace Octobot {
return ResourceManager.GetString("ButtonOpenWiki", resourceCulture);
}
}
+
+ internal static string ButtonReportIssueDisabled
+ {
+ get
+ {
+ return ResourceManager.GetString("ButtonReportIssueDisabled", resourceCulture);
+ }
+ }
}
}
diff --git a/src/Responders/GuildLoadedResponder.cs b/src/Responders/GuildLoadedResponder.cs
index 55e9673..7f7414c 100644
--- a/src/Responders/GuildLoadedResponder.cs
+++ b/src/Responders/GuildLoadedResponder.cs
@@ -113,10 +113,10 @@ public class GuildLoadedResponder : IResponder
ButtonComponentStyle.Link,
BuildInfo.IsDirty
? Messages.ButtonDirty
- : Messages.ButtonReportIssue,
+ : Messages.ButtonReportIssueDisabled,
new PartialEmoji(Name: "\u26a0\ufe0f"), // 'WARNING SIGN' (U+26A0)
URL: BuildInfo.IssuesUrl,
- IsDisabled: BuildInfo.IsDirty
+ IsDisabled: true
);
return await _channelApi.CreateMessageWithEmbedResultAsync(channel, embedResult: errorEmbed,