mirror of
https://github.com/TeamOctolings/Octobot.git
synced 2025-05-05 05:26:28 +03:00
This PR splits the extension methods contained in `Extensions.cs` into separate classes in the `Octobot.Extensions` namespace. This was done for multiple reasons: 1) The `Extensions.cs` violates SRP (Single Responsibility Principle) - it takes upon itself every extension method for many types 2) Having a separate class for each extended type is a standard practice - take a look at [Remora.Discord](https://github.com/Remora/Remora.Discord/tree/main/Backend/Remora.Discord.Rest/Extensions) or [osu!](https://github.com/ppy/osu/tree/master/osu.Game/Extensions) 3) Having all extension methods in one file makes it hard to find the method you want
19 lines
585 B
C#
19 lines
585 B
C#
using Remora.Discord.Commands.Contexts;
|
|
using Remora.Discord.Commands.Extensions;
|
|
using Remora.Rest.Core;
|
|
|
|
namespace Octobot.Extensions;
|
|
|
|
public static class CommandContextExtensions
|
|
{
|
|
public static bool TryGetContextIDs(
|
|
this ICommandContext context, out Snowflake guildId,
|
|
out Snowflake channelId, out Snowflake executorId)
|
|
{
|
|
channelId = default;
|
|
executorId = default;
|
|
return context.TryGetGuildID(out guildId)
|
|
&& context.TryGetChannelID(out channelId)
|
|
&& context.TryGetUserID(out executorId);
|
|
}
|
|
}
|