Releases: Polyhaze/Volte
Volte V3.1.0.1
A very small release, but important nonetheless.
From here on out, these releases will no longer have End-User and Nerd Changes sections. Most people that even look at these releases are nerds so it's pointless.
Changes
- My Discord.Net fork is broken, so I've reverted to main-line Discord.Net for now.
- Newtonsoft.Json has been removed and has been replaced by System.Text.Json. (Thanks @MarkusKgit, #34)
- BotConfig object property setters made public so System.Text.Json can actually function.
PublishTrimmed is now set totrue
in Volte.csproj; this makes the resulting binaries about ~30MB smaller.- This was removed in a later update.
- The LoggingService has been overhauled, and it now looks a lot better, using string padding.
- The
Purge
command can now be used to delete messages by ANY Discord user, provided they've messaged in your guild. - Added AppendLineIf/AppendIf StringBuilder extensions.
- Removed the unnecessary
Usage: |prefix|
prefix on command Remarks. It was ugly in the source code and served no purpose as I could just prepend the correct information to the help message.- This change doesn't make a visual difference for end users; all commands' Remarks (aka Usage) remain the same.
That's all for now. As always, thank you for using Volte!
Volte V3.1
Very minor changes, but I should still release this.
Volte's GitHub Actions now upload the compiled binaries to the build page when they're complete! This allows you to run your own instance of Volte on the latest version of the branch rather than the most recent release.
End-User Changes:
- None
Nerd Changes:
- We now use my own fork of Discord.Net, GreemDev.Discord.Net. This allows me to make my own changes to the library.
- ConfigFile is now named ConfigFilePath in Config.cs.
You can find Volte's V3.1 compiled binaries here. The files are in the top-right under a tab named Artifacts, and you can download the appropriate binary.
Volte V3.0.3
This release contains mostly bug fixes, but there's some QoL improvements as well.
Note that Volte releases will be ONLY executables now, and not .zip files. The file with the .exe
extension is for Windows 10, and the extension-less one is for Linux.
End-User Changes
- Command logs are now sent in a single log message. This change is to prevent this from happening.
- The Color command now has an image in it that is purely the role's color.
- ShowColor command: feed the bot an RGB or Hex value and it'll show you what that color looks like.
- All instance of server have been replaced by guild as that is what the Discord API documentation refers to them as.
- JoinLeaveLog has been renamed to GuildLogging, you'll have to update your config accordingly. (Literally just change
join_leave_log
toguild_logging
in yourvolte.json
file. - Volte now has the ability to send starting notifications to your GuildLogging option.
- It sends shutdown only if the owner Shutdown command was used, otherwise it's not sent.
- WelcomeDm feature: DM someone with a message when they join your guild.
- You can configure this via the
WelcomeDmMessage
(Wdmm
for short) command.
- You can configure this via the
- Grammar in the TagDelete command has been fixed.
- The Info command now shows the amount of successful/unsuccessful command invocations since the bot has started.
Nerd Changes
- Qmmands' implicit operators have been used in TypeParsers.
- TrySendMessage user & channel extension added.
- All Discord-related extensions have been moved from different files to one file,
DiscordExtensions.cs
.
Volte V3.0.2.1
An arguably small release, this one has some rather cool changes.
End-User Changes
- Volte self-hosters can now optionally enable, on top of printing to the console, writing ALL logs to a file for later use. The file also includes date/time-stamps!
- You can now specify, on top of DeleteMessageOnCommand, if you want the tag invocation messages to be automatically deleted by the bot (use the DeleteMessageOnTagCommand, or Dmotc). Note, the bot requires
MANAGE_MESSAGES
in the guild or the channel! example.volte.json
updated.
Nerd Changes
- VolteContext has a new property,
Now
. Use it to get the current time. - LoggingService now has XML docs.
- WelcomeOptions now has
FormatLeavingMessage()
andFormatWelcomeMessage()
. Both take a SocketGuildUser as their parameter. - If
DeleteMessageOnCommand
is enabled, it no longer prints an exception to the console; but rather a simple 1-liner.
Known Issues
- The bot doesn't correctly set a stream status even if the config option
status_twitch_streamer
is set. Might make it a separate config option rather than just doing some checks onstatus_twitch_streamer
.
For a workaround, you can always use the bot owner exclusive commandSetStream
.
Volte V3.0.2.0
Skipped 3.0.1.0 entirely as it was mostly bug fixes, and an altogether small update.
These patch notes include 3.0.1.0.
End-User Changes
- You can now use the Quote command to quote from another server, as the command now searches all channels rather than just the current guild's.
- DevInfo command: shows information about Volte and the system it's currently hosted on.
- Bot author (me)'s name is now shown dynamically in the Info command because of the usage of the Discord REST API.
- Fix silent command failure, fix NullReferenceException in the BigEmojiCommand when the used emoji was not a unicode one.
- Eval command now has helper methods, as a shortcut to get certain objects.
Nerd Changes
- Qmmands 3 nightly is now used, as opposed to the 2.x release.
- Command-related methods in EventService have been moved to a new service, CommandsService.
- IServiceProvider type is now enforced throughout the bot as opposed to just
ServiceProvider
. - Ok and None command results now have the option to await or not await the function invocation.
- Added a Tag TypeParser to reduce duplicate code in tag-related commands.
- C#8 null-coalescing assignment operator used in the UserInfo command.
- A build script is now included in the bot's source. This script assumes you're using & have the .NET Core 3 preview SDK.
- A new process is no longer spawned to get the .NET Core version in the Info command.
- Uptime calculation is now offloaded to a method rather than doing the same calculation multiple times.
- Discord.Net debug logging is now reliant on
Version.ReleaseType
as opposed to the config option. This was especially an issue on larger Volte instances, like the public one. - All commands use StringBuilder where necessary.
- LoggingService.Log is now
private
, use the new shortcut methods instead.
Volte V3
Volte V3 is here! Here's all of the changes, end-user and nerds alike.
Main Changes
- Configuration is now named
volte.json
and now uses more-JSON-esque names. - Commands now use CommandResults, so command processing should be fractionally faster.
- .NET Core 3.0/C#8 is now used, and you NO LONGER need to install .NET Core on your system as Volte is now self-contained as a Linux or Windows 10 executable.
- Volte now properly creates a configuration file on program start if one doesn't exist. It still somehow didn't do that before.
There's probably more that I couldn't think of.
End-User Changes
- Tag management commands, like TagCreate, are now Moderator-restricted as opposed to Admin-restricted.
- Features can now be manually enabled/disabled for self-hosted Volte instances via the new
enabled_features
config section. WelcomeColorCommand
now accepts RGB/HEX values! No longer are you required to provide an RGB if you only know the hex.- Reload command: Reload your Volte config on-the-fly without needing to restart the bot. Note, if you changed the token, you'll still need to restart.
- Permissions command: See permissions for anyone in the server.
- Sharded Client! Public Volte will now automatically fix itself if it ever gets above 2000 guilds.
- Example config file updated to show new config key names/additions.
- Debug logging: You can now have extra info printed to your Volte console for issue diagnosing.
Nerd Changes
- C#8 features like Switch Expressions are now used. You'll need to install the .NET Core 3 SDK to be able to edit this project & run it!
- Anything under
Volte.Data
was moved intoVolte.Core.Models
. I.e.:Volte.Data.Models
->Volte.Core.Models
Config.cs
moved intoVolte.Core
.- Socket types are now enforced all throughout Volte. No more interface types!
- Expression body now used for all methods that are only one line.
IDiscordClient#GetInviteUrl()
extension now generates a URL with default permissions ifwithAdmin
isfalse
.- The current guild's GuildData is now on the Context of every command creation.
- Sync logger. Async logger is bad, and is for the weak-minded.
- Removed Discord.Commands.
- TypeParsers are added automatically, via Reflection.
- ModActionEventArgs now uses a builder pattern.
- All modules made
sealed
. This is purely a compiler optimization.
Volte V2.5
This update was mostly Quality of Life changes; for both the end-user and me the developer.
End-User Changes
- Complete Help command rework.
- Use
$help
to see how it works.
- Use
- Update Discord.Net so that my PR is reflected.
- Reintroduction of Debug as Bin.
- To generate a debug report, run the command
$bin
in your guild.
- To generate a debug report, run the command
- More effective way of dealing with invite URLs in AntilinkService.
- Prevent duplicate role addition in SelfRole commands.
- Updated config.example.json.
- Specify that UTC is shown in the Snowflake command.
Nerd Changes
- SocketGuild TypeParser.
- ModLog-related code moved to ModLogService.
- Guild configuration/data model COMPLETELY overhauled.
- This will NOT reset the database on public Volte as I added a MigrateAsync() function.
- AntilinkService now has discord.me and discord.io link filtering.
- Conform to Dependency Injection patterns, remove static Instance fields and ServiceProvider access.
- Remove unnecessary REST requests.
- Console writing in LoggingService made async.
- Offload Eval command logic to a Service.
- Overall code quality increased.
- Some
if
conditions were inverted to reduce nesting. - Removed unused
using
s.
Volte V2.4.1
Although this is a patch
release, this version has a lot of cool additions/changes.
End-User Changes
- Warn System! Warn your users when they do enough wrong for it to be warranted, but not enough for a ban/kick to occur.
- You can clear any user's warns or see them all via their respective commands.
- Warn: warn a user
- Warns: see all warns or the 10 most recent ones
- ClearWarns: clear all warns for a specific user
- All of this (except Warns) is documented in your server's mod-log!
- You can clear any user's warns or see them all via their respective commands.
- Owner module renamed to BotOwner to prevent confusion; "I am the server owner, why don't I have access to this module?"
- ServerAdmin module renamed to AdminUtility to better suit the type of commands in it.
- Command info/list is now shown regardless of permission level, so you can see moderator commands if you're not a moderator etc.
- Type Parser error messages are now more clear, such as "Role not found."
- Avatar command now shows the TARGET user rather than command invoker, changed for clarification.
- Closes #32.
Commands
command now shows all available commands registered to the bot when the target module is not specified.- Changed the command's Description to reflect this change.
- Eval command actually works now, I had the incorrect namespace included in the imports so the script wouldn't run. Oops!
- Previously, the
Modules
command showed all but one module. This was a non-reported bug, and was caught by me when renaming modules, and it has been fixed. - Debug system removed entirely as
debug.scarsz.me
was deprecated.- There will be a system replacing it in the future.
Nerd Changes
Volte.Data.Objects
-> Volte.Data.Models
namespace rename, and refactored accordingly.
Volte.Commands.Modules.Owner
-> Volte.Commands.Modules.BotOwner
Volte.Commands.Modules.ServerAdmin
-> Volte.Commands.Modules.AdminUtility
Volte V2.4
In this release, things were tidied up to be more consistent for the end-user.
End-User Changes
- true/false can now be passed in as an argument for commands that require a boolean value. How did I overlook this?
- Shutdown command now kills the entire process, rather than keeping it alive but logging out of Discord.
- Avatar command now shows a larger avatar than before.
- Mod log! Track your moderation in a channel.
- Set it up with
$modlog #some-channel
- Set it up with
- Verification removed entirely.
- Eval no longer shows the
input
field on completion. That was redundant. - Eval shows the return type from the eval.
- Eval error is now shown in the embed rather than making a file, uploading it, then deleting it from the file system.
Tags
command: list tags in the current guild.- Purge command now has an optional parameter to purge messages by a certain user.
- Roles that no longer exist will be omitted from the SelfRoleList command, previously it just stated "Role no longer exists.".
- Fixed a discrepancy in which some commands remarks help string contained the default prefix instead of
|prefix|
. - Bot now responds to mention prefixes when the bot has a nickname in the current guild.
- Previously, two commands named
RoleColor
existed. One in the Utility module and the other in ServerAdmin.
The one in Utility was renamed toColor
, and the one in ServerAdmin is stillRoleColor
.- This was actually the cause of #31.
- Updated UserInfo to have a better format of CreatedAt, as well as include JoinedAt.
Nerdy Changes
- Classes that could be made sealed were made sealed.
- Various Extensions under Volte.Extensions were moved to Gommon for less code redundancy per-project.
VolteHandler#HandleMessageAsync
was moved to EventService for uniformity.- .NET Core upgraded to 2.2 from 2.1.
- Remove all usages of
Task.Delay().ContinueWith()
and replace them withExecutor.ExecuteAfterDelayAsync()
. DiscordServer
type renamed toGuildConfiguration
.Volte.Discord
renamed toVolte.Core
.- All
using
directives were updated accordingly.
- All
LoggingService#Log
was renamed toLoggingService#LogAsync
to stay in line with C# standards.obj == null
was still used in some places, replaced that withis
pattern matching.- Eval now runs in a disposed-of Executor.ExecuteAsync call to prevent gateway task blocking.
Volte V2.3.1
In this update, we tried to move to D#+ but decided against it.
In all seriousness, DSharpPlus is a fantastic library, but it just didn't fit my needs.
End-User Changes:
- Fix issue #28.
- Quote now shows the first attachment from the message if an attachment is present.
- Note this only supports images;
.jp(e)g
,.png
, and.gif
.
- Note this only supports images;
- Log statistics on startup, including the bot invite URL.
Now
command: show the current date and time in UTC.
Nerdy Changes:
- Moved to the EventArgs C# standard for event data. Before, it was just sending the raw data as parameters to the handlers. That is no longer the case.
- TimeExtensions how uses
DateTimeOffset#ToString(string format)
calls rather than manually formatting the time. - Eval command now uses a
System.Collections.Generic.List<string>
for imports rather than astring[]
.