diff --git a/Utilities/LibMatrix.Utilities.Bot/Configuration/CommandListenerConfiguration.cs b/Utilities/LibMatrix.Utilities.Bot/Configuration/CommandListenerConfiguration.cs
new file mode 100644
index 0000000..e3026cd
--- /dev/null
+++ b/Utilities/LibMatrix.Utilities.Bot/Configuration/CommandListenerConfiguration.cs
@@ -0,0 +1,24 @@
+using System.Diagnostics.CodeAnalysis;
+using LibMatrix.Filters;
+
+namespace LibMatrix.Utilities.Bot.Configuration;
+
+[SuppressMessage("ReSharper", "UnusedAutoPropertyAccessor.Global", Justification = "Configuration")]
+[SuppressMessage("ReSharper", "ClassNeverInstantiated.Global", Justification = "Configuration")]
+public class CommandListenerSyncConfiguration {
+ // public SyncFilter? Filter { get; set; }
+ public TimeSpan? MinimumSyncTime { get; set; }
+ public int? Timeout { get; set; }
+ public string? Presence { get; set; }
+ // public bool InitialSyncOnStartup { get; set; }
+}
+
+[SuppressMessage("ReSharper", "UnusedAutoPropertyAccessor.Global", Justification = "Configuration")]
+[SuppressMessage("ReSharper", "ClassNeverInstantiated.Global", Justification = "Configuration")]
+public class CommandListenerConfiguration {
+ public CommandListenerSyncConfiguration SyncConfiguration { get; set; } = new();
+
+ public required List<string> Prefixes { get; set; }
+ public bool MentionPrefix { get; set; }
+ public bool SelfCommandsOnly { get; set; }
+}
\ No newline at end of file
diff --git a/Utilities/LibMatrix.Utilities.Bot/Configuration/InviteListenerConfiguration.cs b/Utilities/LibMatrix.Utilities.Bot/Configuration/InviteListenerConfiguration.cs
new file mode 100644
index 0000000..7fce400
--- /dev/null
+++ b/Utilities/LibMatrix.Utilities.Bot/Configuration/InviteListenerConfiguration.cs
@@ -0,0 +1,20 @@
+using System.Diagnostics.CodeAnalysis;
+using LibMatrix.Filters;
+
+namespace LibMatrix.Utilities.Bot.Configuration;
+
+[SuppressMessage("ReSharper", "UnusedAutoPropertyAccessor.Global", Justification = "Configuration")]
+[SuppressMessage("ReSharper", "ClassNeverInstantiated.Global", Justification = "Configuration")]
+public class InviteListenerSyncConfiguration {
+ public SyncFilter? Filter { get; set; }
+ public TimeSpan? MinimumSyncTime { get; set; }
+ public int? Timeout { get; set; }
+ public string? Presence { get; set; }
+ public bool InitialSyncOnStartup { get; set; }
+}
+
+[SuppressMessage("ReSharper", "UnusedAutoPropertyAccessor.Global", Justification = "Configuration")]
+[SuppressMessage("ReSharper", "ClassNeverInstantiated.Global", Justification = "Configuration")]
+public class InviteListenerConfiguration {
+ public InviteListenerSyncConfiguration SyncConfiguration { get; set; } = new();
+}
\ No newline at end of file
diff --git a/Utilities/LibMatrix.Utilities.Bot/Configuration/LibMatrixBotConfiguration.cs b/Utilities/LibMatrix.Utilities.Bot/Configuration/LibMatrixBotConfiguration.cs
new file mode 100644
index 0000000..cd272e0
--- /dev/null
+++ b/Utilities/LibMatrix.Utilities.Bot/Configuration/LibMatrixBotConfiguration.cs
@@ -0,0 +1,17 @@
+using LibMatrix.Utilities.Bot.Configuration;
+using Microsoft.Extensions.Configuration;
+
+namespace LibMatrix.Utilities.Bot;
+
+public class LibMatrixBotConfiguration {
+ public LibMatrixBotConfiguration(IConfiguration config) => config.GetRequiredSection("LibMatrixBot").Bind(this);
+ public string Homeserver { get; set; }
+ public string? AccessToken { get; set; }
+ public string? AccessTokenPath { get; set; }
+ public string? LogRoom { get; set; }
+
+ public string? Presence { get; set; }
+
+ public InviteListenerConfiguration? InviteListener { get; set; }
+ public CommandListenerConfiguration? CommandListener { get; set; }
+}
\ No newline at end of file
|