Skip to content

Commit

Permalink
v2.0.3
Browse files Browse the repository at this point in the history
  • Loading branch information
NockyCZ committed May 14, 2024
1 parent 40cb2b6 commit 7db438d
Show file tree
Hide file tree
Showing 26 changed files with 672 additions and 181 deletions.
3 changes: 2 additions & 1 deletion lang/Report Module/en.json
Original file line number Diff line number Diff line change
Expand Up @@ -14,5 +14,6 @@
"Chat.InvalidReportUsage": "Invalid report usage! {green}/report <player> <reason>",
"Chat.TargetNotFound": "A player named {green}{0}{default} was not found!",
"Chat.TargetNotConnected": "Player {green}{0}{default} is no longer connected!",
"Chat.MultipleTargetFound": "Multiple players were found with the name {green}{0}{default}!"
"Chat.MultipleTargetFound": "Multiple players were found with the name {green}{0}{default}!",
"Chat.AdminReportSend": "{darkred}[REPORTS] Player {green}{0}{default} reported player {darkblue}{1}{default} (Reason: {darkred}{2}{default})"
}
81 changes: 65 additions & 16 deletions src/DiscordUtilities/API/Events.cs
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ public void LinkedUserLoaded(SocketGuildUser user, CCSPlayerController player)
var userData = new UserData
{
GlobalName = user.GlobalName,
DisplayName = user.Username,
DisplayName = user.DisplayName,
ID = user.Id,
RolesIds = userRoles,
};
Expand All @@ -41,6 +41,15 @@ public void LinkedUserLoaded(SocketGuildUser user, CCSPlayerController player)
Perform_SendConsoleMessage("[Discord Utilities] New Event Triggered: LinkedUserDataLoaded", ConsoleColor.Cyan);
});
}
public void ServerDataLoaded()
{
Server.NextFrame(() =>
{
DiscordUtilitiesAPI.Get()?.TriggerEvent(new ServerDataLoaded());
if (IsDebug)
Perform_SendConsoleMessage("[Discord Utilities] New Event Triggered: ServerDataLoaded", ConsoleColor.Cyan);
});
}
public void BotLoaded()
{
Server.NextFrame(() =>
Expand All @@ -61,20 +70,29 @@ public void Event_SlashCommand(SocketSlashCommand command)
Type = (SlashCommandOptionsType)option.Type
}).ToList();

ulong? guildId = command.GuildId != null ? command.GuildId.Value : null;

var commandData = new CommandData
{
GuildId = command.GuildId!.Value,
GuildId = guildId,
InteractionId = interactionId,
CommandName = command.CommandName,
OptionsData = optionsData
};

var user = command.User as SocketGuildUser;
var userRoles = user!.Roles.Select(role => role.Id).ToList() ?? new List<ulong>();
if (user == null)
{
if (IsDebug)
Perform_SendConsoleMessage($"[Discord Utilities] DEBUG: Event_SlashCommand - User was not found!", ConsoleColor.Cyan);
return;
}

var userRoles = user.Roles.Select(role => role.Id).ToList() ?? new List<ulong>();
var userData = new UserData
{
GlobalName = user.GlobalName,
DisplayName = user.Username,
DisplayName = user.DisplayName,
ID = user.Id,
RolesIds = userRoles,
};
Expand All @@ -92,22 +110,32 @@ public void Event_SlashCommand(SocketSlashCommand command)

public void Event_CustomMessageReceived(string customId, IUserMessage message)
{
var guildChannel = message.Channel as SocketGuildChannel;
ulong? guildId = guildChannel != null ? guildChannel.Guild.Id : null;

var messageData = new MessageData
{
ChannelName = message.Channel.Name,
ChannelID = message.Channel.Id,
MessageID = message.Id,
Text = message.Content,
GuildId = (message.Channel as SocketGuildChannel)?.Guild.Id ?? 0,
GuildId = guildId,
Builders = GetMessageBuilders(message)
};

var user = message.Author;
var userRoles = (user as SocketGuildUser)?.Roles.Select(role => role.Id).ToList() ?? new List<ulong>();
var user = message.Author as SocketGuildUser;
if (user == null)
{
if (IsDebug)
Perform_SendConsoleMessage($"[Discord Utilities] DEBUG: Event_CustomMessageReceived - User was not found!", ConsoleColor.Cyan);
return;
}

var userRoles = user.Roles.Select(role => role.Id).ToList() ?? new List<ulong>();
var userData = new UserData
{
GlobalName = user.GlobalName,
DisplayName = user.Username,
DisplayName = user.DisplayName,
ID = user.Id,
RolesIds = userRoles
};
Expand All @@ -122,22 +150,32 @@ public void Event_CustomMessageReceived(string customId, IUserMessage message)

public void Event_MessageReceived(SocketMessage message)
{
var guildChannel = message.Channel as SocketGuildChannel;
ulong? guildId = guildChannel != null ? guildChannel.Guild.Id : null;

var messageData = new MessageData
{
ChannelName = message.Channel.Name,
ChannelID = message.Channel.Id,
MessageID = message.Id,
Text = message.Content,
GuildId = (message.Channel as SocketGuildChannel)?.Guild.Id ?? 0,
GuildId = guildId,
Builders = GetMessageBuilders(message as IUserMessage)
};

var user = message.Author;
var userRoles = (user as SocketGuildUser)?.Roles.Select(role => role.Id).ToList() ?? new List<ulong>();
var user = message.Author as SocketGuildUser;
if (user == null)
{
if (IsDebug)
Perform_SendConsoleMessage($"[Discord Utilities] DEBUG: Event_MessageReceived - User was not found!", ConsoleColor.Cyan);
return;
}

var userRoles = user.Roles.Select(role => role.Id).ToList() ?? new List<ulong>();
var userData = new UserData
{
GlobalName = user.GlobalName,
DisplayName = user.Username,
DisplayName = user.DisplayName,
ID = user.Id,
RolesIds = userRoles
};
Expand All @@ -158,23 +196,34 @@ public void Event_InteractionCreated(SocketInteraction interaction, IComponentIn
message = messageComponent.Message;
}

ulong? guildId = interaction.GuildId != null ? interaction.GuildId.Value : null;
ulong? messageId = message != null ? message.Id : null;

var interactionData = new InteractionData
{
ChannelName = interaction.Channel.Name,
ChannelID = interaction.Channel.Id,
GuildId = interaction.GuildId!.Value,
MessageId = messageId,
GuildId = guildId,
CustomId = componentData.CustomId,
SelectedValues = componentData.Values,
InteractionId = interactionId,
Builders = message == null ? null : GetMessageBuilders(message)
};

var user = interaction.User;
var userRoles = (user as SocketGuildUser)?.Roles.Select(role => role.Id).ToList() ?? new List<ulong>();
var user = interaction.User as SocketGuildUser;
if (user == null)
{
if (IsDebug)
Perform_SendConsoleMessage($"[Discord Utilities] DEBUG: interactionData - User was not found!", ConsoleColor.Cyan);
return;
}

var userRoles = user.Roles.Select(role => role.Id).ToList() ?? new List<ulong>();
var userData = new UserData
{
GlobalName = user.GlobalName,
DisplayName = user.Username,
DisplayName = user.DisplayName,
ID = user.Id,
RolesIds = userRoles
};
Expand Down
2 changes: 1 addition & 1 deletion src/DiscordUtilities/API/Helpers.cs
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ public Embeds.Builder GetEmbedBuilderFromConfig<T>(T obj, ReplaceVariables.Build
Description = ReplaceVariables(fieldData[1], replacedVariables),
Inline = bool.Parse(fieldData[2])
};
Builder.Fields.Add(fieldBuilder);
Builder.Fields!.Add(fieldBuilder);
}
else
{
Expand Down
2 changes: 1 addition & 1 deletion src/DiscordUtilities/API/Players.cs
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ public partial class DiscordUtilities : IDiscordUtilitiesAPI
var userData = new UserData
{
GlobalName = user.GlobalName,
DisplayName = user.Username,
DisplayName = user.DisplayName,
ID = user.Id,
RolesIds = userRoles
};
Expand Down
60 changes: 43 additions & 17 deletions src/DiscordUtilities/Classes.cs
Original file line number Diff line number Diff line change
@@ -1,18 +1,48 @@

using CounterStrikeSharp.API.Core;
using DiscordUtilitiesAPI.Helpers;

namespace DiscordUtilities
{
public partial class DiscordUtilities
{
public enum replaceDataType
{
Server,
Player,
Target,
DiscordChannel,
DiscordUser,
}
public class replaceData
{
public bool Server { get; set; } = false;
public CCSPlayerController? Player { get; set; }
public CCSPlayerController? Target { get; set; }
public UserData? DiscordUser { get; set; }
public MessageData? DiscordChannel { get; set; }
}

public class ConditionData
{
public string Value { get; set; } = "";
public string Operator { get; set; } = "";
public string ValueToCheck { get; set; } = "";
public string ReplacementValue { get; set; } = "";
}

public class ServerData
{
public required string GameDirectory { get; set; }
public required string Name { get; set; }
public required string MaxPlayers { get; set; }
public required string MapName { get; set; }
public required string OnlinePlayers { get; set; }
public required string OnlinePlayersAndBots { get; set; }
public required string OnlineBots { get; set; }
public required string Timeleft { get; set; }
public required string IP { get; set; }
public string ModuleDirectory { get; set; } = "DiscordUtilities";
public string GameDirectory { get; set; } = "csgo";
public string Name { get; set; } = "Counter-Strike 2";
public string MaxPlayers { get; set; } = "10";
public string MapName { get; set; } = "de_mirage";
public string OnlinePlayers { get; set; } = "0";
public string OnlinePlayersAndBots { get; set; } = "0";
public string OnlineBots { get; set; } = "0";
public string Timeleft { get; set; } = "60";
public string IP { get; set; } = "0.0.0.0:27015";
}

public class PlayerData
Expand All @@ -23,13 +53,9 @@ public class PlayerData
public required string SteamId64 { get; set; }
public required string IpAddress { get; set; }
public required string CommunityUrl { get; set; }
/*public required string TeamShortName { get; set; }
public required string TeamLongName { get; set; }
public required string TeamNumber { get; set; }
public required string Kills { get; set; }
public required string Deaths { get; set; }
public required string Assists { get; set; }
public required string Points { get; set; }*/
public required int PlayedTime { get; set; }
public required DateTime FirstJoin { get; set; }
public required DateTime LastSeen { get; set; }
public required string CountryShort { get; set; }
public required string CountryLong { get; set; }
public required string CountryEmoji { get; set; }
Expand All @@ -40,7 +66,7 @@ public class PlayerData
public required string DiscordID { get; set; }
public required bool IsLinked { get; set; }
}

public class DatabaseConnection
{
public required string Server { get; set; }
Expand Down
2 changes: 2 additions & 0 deletions src/DiscordUtilities/Collections.cs
Original file line number Diff line number Diff line change
Expand Up @@ -10,5 +10,7 @@ public partial class DiscordUtilities
public static Dictionary<CCSPlayerController, PlayerData> playerData = new();
public static Dictionary<ulong, ulong> linkedPlayers = new();
public static Dictionary<string, string> linkCodes = new();
public static Dictionary<string, List<ConditionData>> customConditions = new();
public static Dictionary<string, replaceDataType> customVariables = new();
}
}
38 changes: 38 additions & 0 deletions src/DiscordUtilities/Configs.cs
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
using CounterStrikeSharp.API.Core;
using System.Text.Json.Serialization;
using static DiscordUtilities.DiscordUtilities;

namespace DiscordUtilities;

Expand All @@ -8,9 +9,46 @@ public class DUConfig : BasePluginConfig
[JsonPropertyName("Bot Token")] public string Token { get; set; } = "";
[JsonPropertyName("Discord Server ID")] public string ServerID { get; set; } = "";
[JsonPropertyName("Server IP")] public string ServerIP { get; set; } = "0.0.0.0:00000";
[JsonPropertyName("Use Custom Variables")] public bool UseCustomVariables { get; set; } = true;
[JsonPropertyName("Date Format")] public string DateFormat { get; set; } = "yyyy-MM-dd HH:mm:ss";
[JsonPropertyName("Database Connection")] public Database Database { get; set; } = new Database();
[JsonPropertyName("BOT Status")] public BotStatus BotStatus { get; set; } = new BotStatus();
[JsonPropertyName("Link System")] public Link Link { get; set; } = new Link();

[JsonPropertyName("Custom Variables")]
public Dictionary<string, List<ConditionData>> customConditions { get; set; } = new()
{
{
"Player.DiscordNameWithPing", new List<ConditionData>
{
new ConditionData { Value = "{Player.DiscordDisplayName}", Operator = "==", ValueToCheck = "", ReplacementValue = "Not Linked" },
new ConditionData { Value = "{Player.DiscordDisplayName}", Operator = "!=", ValueToCheck = "", ReplacementValue = "{Player.DiscordDisplayName} ({Player.DiscordPing})" }
}
},
{
"Player.PlayedTimeNames", new List<ConditionData>
{
new ConditionData { Value = "{Player.PlayedTime}", Operator = ">", ValueToCheck = "100", ReplacementValue = "Active Player ({Player.PlayedTime}h)" },
new ConditionData { Value = "{Player.PlayedTime}", Operator = ">", ValueToCheck = "75", ReplacementValue = "Advanced ({Player.PlayedTime}h)" },
new ConditionData { Value = "{Player.PlayedTime}", Operator = ">=", ValueToCheck = "50", ReplacementValue = "Beginner ({Player.PlayedTime}h)" },
new ConditionData { Value = "{Player.PlayedTime}", Operator = "<", ValueToCheck = "50", ReplacementValue = "Newbie ({Player.PlayedTime}h)" }
}
},
{
"Server.RemoveMapPrefix", new List<ConditionData>
{
new ConditionData { Value = "{Server.MapName}", Operator = "~", ValueToCheck = "de_", ReplacementValue = "{Replace(de_)()}" },
new ConditionData { Value = "{Server.MapName}", Operator = "~", ValueToCheck = "cs_", ReplacementValue = "{Replace(cs_)()}" }
}
},
{
"Server.CustomOnlinePlayers", new List<ConditionData>
{
new ConditionData { Value = "{Server.OnlinePlayers}", Operator = "==", ValueToCheck = "0", ReplacementValue = "Server Is Empty" },
new ConditionData { Value = "{Server.OnlinePlayers}", Operator = "!=", ValueToCheck = "0", ReplacementValue = "({Server.OnlinePlayers}/{Server.MaxPlayers})" }
}
}
};
[JsonPropertyName("Debug Messages")] public bool Debug { get; set; } = false;
}

Expand Down
Loading

0 comments on commit 7db438d

Please sign in to comment.