Skip to content

Commit

Permalink
Merge pull request #47 from penev92/restructuring
Browse files Browse the repository at this point in the history
Restructured the project
  • Loading branch information
penev92 authored Nov 11, 2021
2 parents 7f46fd9 + e6c6dce commit 7ab2fa0
Show file tree
Hide file tree
Showing 59 changed files with 350 additions and 239 deletions.
4 changes: 4 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
Expand Up @@ -8,4 +8,8 @@ indent_size = 4

[*.config]
indent_style = tab
indent_size = 4

[*.json]
indent_style = tab
indent_size = 4
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
using Discord.WebSocket;

namespace Orabot.EventHandlers.CustomMessageHandlers
namespace Orabot.Core.Abstractions.EventHandlers
{
internal interface ICustomMessageHandler
public interface ICustomMessageHandler
{
bool CanHandle(SocketUserMessage message);

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
using System.Threading.Tasks;
using Discord;

namespace Orabot.EventHandlers.Abstraction
namespace Orabot.Core.Abstractions.EventHandlers
{
public interface ILogEventHandler
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
using System.Threading.Tasks;
using Discord.WebSocket;

namespace Orabot.EventHandlers.Abstraction
namespace Orabot.Core.Abstractions.EventHandlers
{
public interface IMessageEventHandler
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
using Discord;
using Discord.WebSocket;

namespace Orabot.EventHandlers.Abstraction
namespace Orabot.Core.Abstractions.EventHandlers
{
public interface IReactionEventHandler
{
Expand Down
11 changes: 11 additions & 0 deletions Orabot.Core.Abstractions/Orabot.Core.Abstractions.csproj
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFramework>netstandard2.1</TargetFramework>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Discord.Net.WebSocket" Version="2.4.0" />
</ItemGroup>

</Project>
14 changes: 7 additions & 7 deletions Orabot/Bot.cs → Orabot.Core/Bot.cs
Original file line number Diff line number Diff line change
@@ -1,20 +1,19 @@
using System;
using System.Configuration;
using System.Threading.Tasks;
using Discord;
using Discord.Commands;
using Discord.WebSocket;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Orabot.EventHandlers.Abstraction;
using Orabot.TypeReaders;
using Orabot.Core.Abstractions.EventHandlers;
using Orabot.Core.TypeReaders;

namespace Orabot
namespace Orabot.Core
{
public class Bot : IDisposable
{
private static readonly string DiscordBotToken = ConfigurationManager.AppSettings["BotToken"];

private readonly IServiceProvider _serviceProvider;
private readonly string _discordBotToken;

private readonly DiscordSocketClient _client;
private readonly CommandService _commands;
Expand All @@ -26,6 +25,7 @@ public class Bot : IDisposable
public Bot(IServiceProvider serviceProvider)
{
_serviceProvider = serviceProvider;
_discordBotToken = _serviceProvider.GetService<IConfiguration>()["BotToken"];

_client = _serviceProvider.GetService<DiscordSocketClient>();
_commands = _serviceProvider.GetService<CommandService>();
Expand All @@ -39,7 +39,7 @@ public Bot(IServiceProvider serviceProvider)

public async Task RunAsync()
{
await _client.LoginAsync(TokenType.Bot, DiscordBotToken);
await _client.LoginAsync(TokenType.Bot, _discordBotToken);
await _client.StartAsync();

Console.ReadLine();
Expand Down
68 changes: 68 additions & 0 deletions Orabot.Core/DependencyInjection/ServiceProviderExtensions.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
using System.IO;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Orabot.Core.Abstractions.EventHandlers;
using Orabot.Core.EventHandlers;
using Orabot.Core.EventHandlers.CustomMessageHandlers.AttachmentMessageHandlers;
using Orabot.Core.EventHandlers.CustomMessageHandlers.CommandMessageHandlers;
using Orabot.Core.EventHandlers.CustomMessageHandlers.LinkParsingMessageHandlers;
using Orabot.Core.EventHandlers.CustomMessageHandlers.ModTimersMessageHandlers;
using Orabot.Core.EventHandlers.CustomMessageHandlers.NumberParsingMessageHandlers;
using Orabot.Core.EventHandlers.CustomMessageHandlers.NumberParsingMessageHandlers.GitHubIssueNumberMessageHandlers;
using Orabot.Core.EventHandlers.CustomMessageHandlers.SpecificTextMessageHandlers;
using Orabot.Core.Transformers.AttachmentToMessageTransformers;
using Orabot.Core.Transformers.LinkToEmbedTransformers;
using Orabot.Core.Transformers.Replays.ReplayDataToEmbedTransformers;
using Orabot.Core.Transformers.Replays.ReplayToReplayDataTransformers;

namespace Orabot.Core.DependencyInjection
{
public static class ServiceProviderExtensions
{
public static IServiceCollection AddAppSettingsConfiguration(this IServiceCollection serviceCollection)
{
return serviceCollection
.AddSingleton<IConfiguration>(provider =>
{
var builder = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json");
return builder.Build();
});
}

public static IServiceCollection AddDefaultEventHandlerServices(this IServiceCollection serviceCollection)
{
return serviceCollection
.AddSingleton<ILogEventHandler, LogEventHandler>()
.AddSingleton<IMessageEventHandler, MessageEventHandler>()
.AddSingleton<IReactionEventHandler, RoleAssignmentReactionEventHandler>();
}

public static IServiceCollection AddDefaultCustomMessageHandlers(this IServiceCollection serviceCollection)
{
return serviceCollection
.AddSingleton<ICustomMessageHandler, OpenRaGitHubIssueNumberMessageHandler>()
.AddSingleton<ICustomMessageHandler, OpenRaModSdkGitHubIssueNumberMessageHandler>()
.AddSingleton<ICustomMessageHandler, OpenRaRa2GitHubIssueNumberMessageHandler>()
.AddSingleton<ICustomMessageHandler, OpenRaWebGitHubIssueNumberMessageHandler>()
.AddSingleton<ICustomMessageHandler, OrabotGitHubIssueNumberMessageHandler>()
.AddSingleton<ICustomMessageHandler, OpenRaResourceCenterMapNumberMessageHandler>()
.AddSingleton<ICustomMessageHandler, OpenRaResourceCenterMapLinkMessageHandler>()
.AddSingleton<ICustomMessageHandler, LogFileAttachmentMessageHandler>()
.AddSingleton<ICustomMessageHandler, ReplayFileAttachmentMessageHandler>()
.AddSingleton<ICustomMessageHandler, BaseCommandMessageHandler>()
.AddSingleton<ICustomMessageHandler, BaseModTimerMessageHandler>()
.AddSingleton<ICustomMessageHandler, StackTraceMessageHandler>();
}
public static IServiceCollection AddDefaultTransformers(this IServiceCollection serviceCollection)
{
return serviceCollection
.AddSingleton<AttachmentLogFileToMessageTransformer>()
.AddSingleton<OpenRaResourceCenterMapLinkToEmbedTransformer>()
.AddSingleton<AttachmentReplayToUtilityMetadataTransformer>()
.AddSingleton<UtilityReplayMetadataToEmbedTransformer>();
}
}
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
using System.Linq;
using Discord.WebSocket;
using Orabot.Core.Abstractions.EventHandlers;

namespace Orabot.EventHandlers.CustomMessageHandlers.AttachmentMessageHandlers
namespace Orabot.Core.EventHandlers.CustomMessageHandlers.AttachmentMessageHandlers
{
internal abstract class BaseAttachmentMessageHandler : ICustomMessageHandler
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
using System.Linq;
using Discord.WebSocket;
using Orabot.Transformers.AttachmentToMessageTransformers;
using Orabot.Core.Transformers.AttachmentToMessageTransformers;

namespace Orabot.EventHandlers.CustomMessageHandlers.AttachmentMessageHandlers
namespace Orabot.Core.EventHandlers.CustomMessageHandlers.AttachmentMessageHandlers
{
internal class LogFileAttachmentMessageHandler : BaseAttachmentMessageHandler
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
using System.Linq;
using Discord.WebSocket;
using Orabot.Transformers.Replays.ReplayDataToEmbedTransformers;
using Orabot.Transformers.Replays.ReplayToReplayDataTransformers;
using Orabot.Core.Transformers.Replays.ReplayDataToEmbedTransformers;
using Orabot.Core.Transformers.Replays.ReplayToReplayDataTransformers;

namespace Orabot.EventHandlers.CustomMessageHandlers.AttachmentMessageHandlers
namespace Orabot.Core.EventHandlers.CustomMessageHandlers.AttachmentMessageHandlers
{
internal class ReplayFileAttachmentMessageHandler : BaseAttachmentMessageHandler
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,9 @@
using Discord.Commands;
using Discord.WebSocket;
using Microsoft.Extensions.DependencyInjection;
using Orabot.Core.Abstractions.EventHandlers;

namespace Orabot.EventHandlers.CustomMessageHandlers.CommandMessageHandlers
namespace Orabot.Core.EventHandlers.CustomMessageHandlers.CommandMessageHandlers
{
internal class BaseCommandMessageHandler : ICustomMessageHandler
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,9 @@
using System.Linq;
using System.Text.RegularExpressions;
using Discord.WebSocket;
using Orabot.Core.Abstractions.EventHandlers;

namespace Orabot.EventHandlers.CustomMessageHandlers.LinkParsingMessageHandlers
namespace Orabot.Core.EventHandlers.CustomMessageHandlers.LinkParsingMessageHandlers
{
internal abstract class BaseLinkParsingMessageHandler : ICustomMessageHandler
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
using Discord.WebSocket;
using Orabot.Transformers.LinkToEmbedTransformers;
using Orabot.Core.Transformers.LinkToEmbedTransformers;

namespace Orabot.EventHandlers.CustomMessageHandlers.LinkParsingMessageHandlers
namespace Orabot.Core.EventHandlers.CustomMessageHandlers.LinkParsingMessageHandlers
{
internal class OpenRaResourceCenterMapLinkMessageHandler : BaseLinkParsingMessageHandler
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
using System.Linq;
using System.Text.RegularExpressions;
using Discord.WebSocket;
using Orabot.Core.Abstractions.EventHandlers;

namespace Orabot.EventHandlers.CustomMessageHandlers.ModTimersMessageHandlers
namespace Orabot.Core.EventHandlers.CustomMessageHandlers.ModTimersMessageHandlers
{
internal class BaseModTimerMessageHandler : ICustomMessageHandler
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,9 @@
using System.Linq;
using System.Text.RegularExpressions;
using Discord.WebSocket;
using Orabot.Core.Abstractions.EventHandlers;

namespace Orabot.EventHandlers.CustomMessageHandlers.NumberParsingMessageHandlers
namespace Orabot.Core.EventHandlers.CustomMessageHandlers.NumberParsingMessageHandlers
{
internal abstract class BaseNumberParsingMessageHandler : ICustomMessageHandler
{
Expand All @@ -30,7 +31,7 @@ public bool CanHandle(SocketUserMessage message)
var matches = _regexMatchPatterns.SelectMany(regexMatchPattern => Regex.Matches(message.Content, regexMatchPattern, _regexOptions));
foreach (var match in matches)
{
var split = match.Groups.Values.Last().Value.Split('#');
var split = match.Groups.Last().Value.Split('#');
var keyword = split[0];
if (int.TryParse(split[1], out var number) && MinimumHandledNumberPerKeyword[keyword] <= number)
{
Expand All @@ -50,7 +51,7 @@ protected IEnumerable<string> GetMatchedNumbers(string message)
var matches = Regex.Matches(message, regexMatchPattern, _regexOptions);
foreach (Match match in matches)
{
yield return match.Groups.Values.Last().Value.Split('#')[1];
yield return match.Groups.Last().Value.Split('#')[1];
}
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Linq;
using Discord;
using Discord.WebSocket;
using Orabot.Objects.GitHub;
using Microsoft.Extensions.Configuration;
using Orabot.Core.Objects.GitHub;
using RestSharp;

namespace Orabot.EventHandlers.CustomMessageHandlers.NumberParsingMessageHandlers.GitHubIssueNumberMessageHandlers
namespace Orabot.Core.EventHandlers.CustomMessageHandlers.NumberParsingMessageHandlers.GitHubIssueNumberMessageHandlers
{
internal abstract class BaseGitHubIssueNumberMessageHandler : BaseNumberParsingMessageHandler
{
Expand All @@ -21,7 +21,7 @@ internal abstract class BaseGitHubIssueNumberMessageHandler : BaseNumberParsingM

protected abstract string RepositoryName { get; }

private static readonly string IssueIconBaseUrl = ConfigurationManager.AppSettings["GitHubIconsBaseUrl"];
private readonly string _issueIconBaseUrl;

private readonly IRestClient _restClient;
private readonly Dictionary<string, Color> _colorPerStatus = new Dictionary<string, Color>
Expand All @@ -31,10 +31,11 @@ internal abstract class BaseGitHubIssueNumberMessageHandler : BaseNumberParsingM
{ "merged", Color.Purple }
};

internal BaseGitHubIssueNumberMessageHandler(IRestClient restClient)
internal BaseGitHubIssueNumberMessageHandler(IRestClient restClient, IConfiguration configuration)
{
_restClient = restClient;
restClient.BaseUrl = new Uri(BaseApiUrl);
_issueIconBaseUrl = configuration["GitHubIconsBaseUrl"];
}

public override void Invoke(SocketUserMessage message)
Expand Down Expand Up @@ -125,9 +126,9 @@ public override void Invoke(SocketUserMessage message)
}
}

private static string GetIssueIconUrl(bool isIssue, string status)
private string GetIssueIconUrl(bool isIssue, string status)
{
return $"{IssueIconBaseUrl}/github-{(isIssue ? "issue" : "pr")}-{status}.png";
return $"{_issueIconBaseUrl}/github-{(isIssue ? "issue" : "pr")}-{status}.png";
}
}
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
using System.Collections.Generic;
using Microsoft.Extensions.Configuration;
using RestSharp;

namespace Orabot.EventHandlers.CustomMessageHandlers.NumberParsingMessageHandlers.GitHubIssueNumberMessageHandlers
namespace Orabot.Core.EventHandlers.CustomMessageHandlers.NumberParsingMessageHandlers.GitHubIssueNumberMessageHandlers
{
internal class OpenRaGitHubIssueNumberMessageHandler : BaseGitHubIssueNumberMessageHandler
{
Expand All @@ -15,6 +16,6 @@ internal class OpenRaGitHubIssueNumberMessageHandler : BaseGitHubIssueNumberMess
{ "ora", 0 }
};

public OpenRaGitHubIssueNumberMessageHandler(IRestClient restClient) : base(restClient) { }
public OpenRaGitHubIssueNumberMessageHandler(IRestClient restClient, IConfiguration configuration) : base(restClient, configuration) { }
}
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
using System.Collections.Generic;
using Microsoft.Extensions.Configuration;
using RestSharp;

namespace Orabot.EventHandlers.CustomMessageHandlers.NumberParsingMessageHandlers.GitHubIssueNumberMessageHandlers
namespace Orabot.Core.EventHandlers.CustomMessageHandlers.NumberParsingMessageHandlers.GitHubIssueNumberMessageHandlers
{
internal class OpenRaModSdkGitHubIssueNumberMessageHandler : BaseGitHubIssueNumberMessageHandler
{
Expand All @@ -14,6 +15,6 @@ internal class OpenRaModSdkGitHubIssueNumberMessageHandler : BaseGitHubIssueNumb
{ "sdk", 0 }
};

public OpenRaModSdkGitHubIssueNumberMessageHandler(IRestClient restClient) : base(restClient) { }
public OpenRaModSdkGitHubIssueNumberMessageHandler(IRestClient restClient, IConfiguration configuration) : base(restClient, configuration) { }
}
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
using System.Collections.Generic;
using Microsoft.Extensions.Configuration;
using RestSharp;

namespace Orabot.EventHandlers.CustomMessageHandlers.NumberParsingMessageHandlers.GitHubIssueNumberMessageHandlers
namespace Orabot.Core.EventHandlers.CustomMessageHandlers.NumberParsingMessageHandlers.GitHubIssueNumberMessageHandlers
{
internal class OpenRaRa2GitHubIssueNumberMessageHandler : BaseGitHubIssueNumberMessageHandler
{
Expand All @@ -14,6 +15,6 @@ internal class OpenRaRa2GitHubIssueNumberMessageHandler : BaseGitHubIssueNumberM
{ "ra2", 0 }
};

public OpenRaRa2GitHubIssueNumberMessageHandler(IRestClient restClient) : base(restClient) { }
public OpenRaRa2GitHubIssueNumberMessageHandler(IRestClient restClient, IConfiguration configuration) : base(restClient, configuration) { }
}
}
Loading

0 comments on commit 7ab2fa0

Please sign in to comment.