1
0
Fork 1
mirror of https://github.com/TeamOctolings/Octobot.git synced 2025-02-24 16:02:39 +03:00
A general-purpose Discord bot for moderation written in C#
Find a file
Octol1ttle 4785d162a2
Handle temporary files being present when loading guild data (#345)
This PR fixes catastrophic guild data loading errors that appear when
there are lingering temporary files. In normal operation, temporary
files are deleted as soon as they are copied to the main file. It is
also expected that temporary files are valid JSON files.

However, due to a yesterday's DoS attack, something™️ happened and a
bunch of empty temporary files got written to disk. When Octobot
recovered from the attack, it was unable to load any guild data because
of the temporary files.

This PR addresses this issue by changing the data loading logic:
1) Check if there's a temporary file. If it exists, try loading it.
2) If it is successfully loaded, move the temp file to the main file and
resume operation as normal
3) If it could not be loaded, try loading the main file
4) If it is successfully loaded, delete the temporary file and resume
operation as normal
5) If it is not, throw an error (like before)

This PR was tested on production data and managed to load every guild
without errors.

Signed-off-by: Octol1ttle <l1ttleofficial@outlook.com>
2025-02-03 16:58:57 +05:00
.github Bump TargetFramework from 8.0 to 9.0 (#344) 2024-12-01 19:52:47 +03:00
CodeAnalysis Ban usages of Thread#Sleep (#243) 2023-12-21 20:21:20 +03:00
docs README: Refer to the Octobot's Wiki in Building Octobot (#316) 2024-06-11 11:28:06 +05:00
TeamOctolings.Octobot Handle temporary files being present when loading guild data (#345) 2025-02-03 16:58:57 +05:00
.editorconfig Allow using expression-bodied properties (#280) 2024-03-20 21:08:59 +05:00
.gitignore Add Dockerfile and compose.yaml (#335) 2024-10-27 22:31:04 +05:00
compose.example.yaml Add Dockerfile and compose.yaml (#335) 2024-10-27 22:31:04 +05:00
Dockerfile Bump TargetFramework from 8.0 to 9.0 (#344) 2024-12-01 19:52:47 +03:00
LICENSE Seal all possible classes, add LICENSE, follow async naming conventions 2022-09-18 19:41:29 +05:00
Octobot.sln Apply official naming guidelines to Octobot (#306) 2024-05-16 20:34:26 +05:00

Octobot banner

Veemo! I'm a general-purpose bot for moderation (formerly known as Boyfriend) written by Team Octolings in C# and Remora.Discord

Features

  • Banning, muting, kicking, etc.
  • Reminding you about something if you wish
  • Reminding everyone about that new event you made
  • Renaming those annoying self-hoisting members
  • Log everything from joining the server to deleting messages
  • Listen to Inkantation!

...a-a-and more!

Building Octobot

Check out the Octobot's Wiki for details.

Windows Linux/macOS

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 to understand how to help in the most effective way possible.

Special Thanks

JetBrains Logo (Main) logo

JetBrains, creators of ReSharper and Rider, supports Octobot with one of their Open Source Licenses. 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.