Compare commits
276 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| d5f78c831e | |||
| 7847c6cc8d | |||
| 82716a4f4f | |||
| 9476f9ec31 | |||
| dc787ac130 | |||
| 9525394a6e | |||
| fc93255503 | |||
| cadf500400 | |||
| 780614e1e7 | |||
| f32920c564 | |||
| 123e8e90a1 | |||
| 0323c888b3 | |||
| 1bb6d3b731 | |||
| 4dc5819c4e | |||
| 5d4fa6fba7 | |||
| b6675af9cb | |||
| 23a914d2c9 | |||
| e8822deeac | |||
| 29ecdb6883 | |||
| 90aa5875b5 | |||
| 0fccf706a1 | |||
| fd9cd49844 | |||
| 3c3c6a1301 | |||
| a2179787b9 | |||
| 8c06df9110 | |||
| ef7a2c0896 | |||
| 14f280baef | |||
| 196fb6d3d1 | |||
| cc355d7d4f | |||
| af90ae5fba | |||
| c8480b3c83 | |||
| fe32ebc4d7 | |||
| 2280957ea9 | |||
| 944d59d9a3 | |||
| 79ecff971b | |||
| 1f0e6516fd | |||
| 692f3d8f8c | |||
| 6d41d51694 | |||
| 5f23bdadcf | |||
| d3555b6fca | |||
| b5cdc0afeb | |||
| 3858156393 | |||
| 6279c5c3a9 | |||
| f58a57c6cd | |||
| d00ebfd7ed | |||
| ab279bd284 | |||
| 89c4932cd7 | |||
| c577f625c2 | |||
| 58624f4037 | |||
| c9249dc71b | |||
| 5e4f1ca35f | |||
| 0d8fdb5904 | |||
| 92a18e3495 | |||
| e929646e8e | |||
| 6315d13d18 | |||
| ee527bb36f | |||
| 86514d1770 | |||
| 9e8ed1e911 | |||
| f3c3c7939c | |||
| 361ed37362 | |||
| ed3128b940 | |||
| 6bbd68a135 | |||
| 06d322b5b3 | |||
| 5497ee9119 | |||
| 0aa78e3560 | |||
| 41ad37b3bb | |||
| 0104d09509 | |||
| b4f5e40f12 | |||
| 7107b17f19 | |||
| 42e1fd917e | |||
| 9e6fcdbe6f | |||
| a24d8aa222 | |||
| 0e5c9ff14b | |||
| f8977d8840 | |||
| bb9768f3a1 | |||
| b3d6930142 | |||
| 5254be44be | |||
| 207e0d6abd | |||
| 968d23380f | |||
| fff9e2e897 | |||
| 3e4e777d8d | |||
| 7f906d400f | |||
| c1161a3bca | |||
| ac512e3a27 | |||
| 730b628fe3 | |||
| 701edc5c6a | |||
| e7688762b8 | |||
| a7a71bf49a | |||
| ac7212ca00 | |||
| 298e557260 | |||
| 7ba791f906 | |||
| 4a6a12baae | |||
| f1dda5da3c | |||
| 3ab96e2d0d | |||
| 970c519a32 | |||
| 188920ec7f | |||
| dcfc4ea32f | |||
| a8c02176d3 | |||
| 1665d47a25 | |||
| 0b2f1e6ab6 | |||
| bcd9245502 | |||
| 59da9b295b | |||
| 99d7d5e7e7 | |||
| e4c60f1606 | |||
| 77f1bef862 | |||
| f16c139362 | |||
| c94cdca6eb | |||
| dcdf80112d | |||
| eb836c5b74 | |||
| de680c6771 | |||
|
|
bcef58a46b | ||
|
|
0dc8cdbce5 | ||
|
|
dbdbaa9802 | ||
|
|
5edcf93371 | ||
|
|
b0be76c62b | ||
| 75a77389a8 | |||
| 0bbced3d58 | |||
| 244209093e | |||
| 54a68d635d | |||
| d7a5cb5a64 | |||
| 6124f89cb0 | |||
| 810a527cc1 | |||
| 0a2dff0c6d | |||
| 382c376c03 | |||
| 84b7d663bc | |||
| 623232b67e | |||
| d5df6cfb9d | |||
| 10b9548c29 | |||
| fa1a136ef1 | |||
| d20cb62139 | |||
| f2418d0395 | |||
| 460a85944a | |||
| 7e2fa02d07 | |||
| 873855937f | |||
| 1cdd2644df | |||
| 532540b74f | |||
| 9ba4ca43e2 | |||
| 8bcaf3f254 | |||
| 0d5c90323a | |||
| 5b01b15216 | |||
| 4f18f505f4 | |||
| 2d3566a01a | |||
| 22f2cd4e59 | |||
| 1683234376 | |||
| 69d99b4189 | |||
| 4a5e0ef2f3 | |||
| 79731a9704 | |||
| bd53d099d1 | |||
| de61f5de88 | |||
| 0527d43dd2 | |||
| e3511cd96b | |||
| d355d3c9b7 | |||
| 5bb13aa4a6 | |||
| 655f5e2ce0 | |||
| 9014d78a7d | |||
| 1c026e7f49 | |||
| d32b3902c9 | |||
| e5f3aff39a | |||
| 11ec02ef68 | |||
| cad19935d5 | |||
| 47f88f167f | |||
| 9d6c335799 | |||
| cbaf552e7a | |||
| a4975a4578 | |||
| 725d02d152 | |||
| ae7118e89a | |||
| cad3bb5b75 | |||
| 269d7d56ff | |||
| 403c023191 | |||
| 3f7a8e04d4 | |||
| 0abbd24b86 | |||
| 21f1975fbc | |||
| d6f072904e | |||
| 6fc491a0d6 | |||
| 7bc9db03f0 | |||
| 641f0f2856 | |||
| ef5439d204 | |||
| c2093c2aca | |||
| a39f7bb0c9 | |||
| 6d73ec7f24 | |||
| 24d4bee85b | |||
| a1bde013e6 | |||
| 23f951167b | |||
| 26505fd5c9 | |||
| 28fff8db8a | |||
| fa15bc2333 | |||
| 113c64279f | |||
| 81cc6709d6 | |||
| 571c0a5360 | |||
|
|
eefdea2de9 | ||
| f7e6b0a398 | |||
| 68a83b052a | |||
| d689eee7fa | |||
| f6442af30c | |||
| b98f57fcf8 | |||
| 77aad985fa | |||
|
|
f8ebf76f92 | ||
| 6da9828e5c | |||
| 3ba45790e7 | |||
| e440e97948 | |||
|
|
938c73c810 | ||
| a8520c8c96 | |||
| debdc58646 | |||
| 8b36c086ef | |||
| 1f5e5d0611 | |||
| bbc1c601c9 | |||
| 5ab3195956 | |||
| 1f1983480a | |||
| 2fcd86cf12 | |||
| 2c83d00c00 | |||
|
|
ccac0ca6d0 | ||
| 4c9c7410f0 | |||
| eef13db3aa | |||
| 27bbe899ab | |||
| 79002de9a5 | |||
| 17f68a8e5e | |||
| c415fa1c0c | |||
| b8ec6f42df | |||
| 3f67d7f3f9 | |||
| 2dae8a3a63 | |||
| 47aae730c7 | |||
| aa808e950a | |||
| 7dd43b7841 | |||
| 82a3744d48 | |||
| 3839e4d838 | |||
| a66ebc43d9 | |||
| 45bbda8185 | |||
| 2db6bf2729 | |||
| 3097eb7fca | |||
| efb6ac5192 | |||
| 27fe615447 | |||
| c40fcdac9d | |||
| c674c76bd0 | |||
| 1292e0f585 | |||
| 3abb4cdda7 | |||
| c6e8976456 | |||
| 19115a837c | |||
| 0a200abec6 | |||
| c80fe33e6d | |||
|
|
edc5cb97ba | ||
| 059228ca52 | |||
| 861b83cda2 | |||
| 97888626b6 | |||
| 781bb489bd | |||
| 1712205222 | |||
| 51324f6dca | |||
| 531edcd3cc | |||
| c66ff52d94 | |||
|
|
195c082cd7 | ||
| 16005ef30d | |||
| c15f7b4874 | |||
| fd28a166f7 | |||
| 4fbea983da | |||
| 690b7fe5f1 | |||
| e88d654da1 | |||
| 0b6b57cc84 | |||
| 8fcd33e734 | |||
| 0d524cdf65 | |||
| ab6f14e74c | |||
| 3e01e75de3 | |||
| 1ae48a100e | |||
| 4855c8495d | |||
| f8de1536b2 | |||
| c1d0155867 | |||
| a9ce01e7c9 | |||
| e6692e4263 | |||
| 16c06c8319 | |||
| 363c85d0b3 | |||
| 760a840cc7 | |||
| 0160b011dd | |||
| 6e09fa9738 | |||
| c7ae9202e6 | |||
|
|
55ac4e2b52 | ||
| 96b681bbda | |||
| 9f656d5f3f | |||
| c719eaf4fd |
14
.gitignore
vendored
14
.gitignore
vendored
@@ -98,6 +98,7 @@ StyleCopReport.xml
|
|||||||
*.pidb
|
*.pidb
|
||||||
*.svclog
|
*.svclog
|
||||||
*.scc
|
*.scc
|
||||||
|
*.code-workspace
|
||||||
|
|
||||||
# Chutzpah Test files
|
# Chutzpah Test files
|
||||||
_Chutzpah*
|
_Chutzpah*
|
||||||
@@ -362,3 +363,16 @@ MigrationBackup/
|
|||||||
|
|
||||||
# Fody - auto-generated XML schema
|
# Fody - auto-generated XML schema
|
||||||
FodyWeavers.xsd
|
FodyWeavers.xsd
|
||||||
|
|
||||||
|
*.txt
|
||||||
|
|
||||||
|
#folders
|
||||||
|
/Plugins/
|
||||||
|
/DiscordBot.rar
|
||||||
|
/DiscordBot/Data/
|
||||||
|
/DiscordBot/Updater/
|
||||||
|
.idea/
|
||||||
|
DiscordBot/Launcher.exe
|
||||||
|
DiscordBotUI/bin
|
||||||
|
DiscordBotUI/obj
|
||||||
|
/.vscode
|
||||||
|
|||||||
26
.vscode/launch.json
vendored
26
.vscode/launch.json
vendored
@@ -1,26 +0,0 @@
|
|||||||
{
|
|
||||||
"version": "0.2.0",
|
|
||||||
"configurations": [
|
|
||||||
{
|
|
||||||
// Use IntelliSense to find out which attributes exist for C# debugging
|
|
||||||
// Use hover for the description of the existing attributes
|
|
||||||
// For further information visit https://github.com/OmniSharp/omnisharp-vscode/blob/master/debugger-launchjson.md
|
|
||||||
"name": ".NET Core Launch (console)",
|
|
||||||
"type": "coreclr",
|
|
||||||
"request": "launch",
|
|
||||||
"preLaunchTask": "build",
|
|
||||||
// If you have changed target frameworks, make sure to update the program path.
|
|
||||||
"program": "${workspaceFolder}/DiscordBot/bin/Debug/net5.0/DiscordBot.dll",
|
|
||||||
"args": [],
|
|
||||||
"cwd": "${workspaceFolder}/DiscordBot",
|
|
||||||
// For more information about the 'console' field, see https://aka.ms/VSCode-CS-LaunchJson-Console
|
|
||||||
"console": "internalConsole",
|
|
||||||
"stopAtEntry": false
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": ".NET Core Attach",
|
|
||||||
"type": "coreclr",
|
|
||||||
"request": "attach"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
5
.vscode/solution-explorer/class.cs-template
vendored
5
.vscode/solution-explorer/class.cs-template
vendored
@@ -1,5 +0,0 @@
|
|||||||
namespace {{namespace}};
|
|
||||||
|
|
||||||
public class {{name}}
|
|
||||||
{
|
|
||||||
}
|
|
||||||
3
.vscode/solution-explorer/class.ts-template
vendored
3
.vscode/solution-explorer/class.ts-template
vendored
@@ -1,3 +0,0 @@
|
|||||||
export class {{name}} {
|
|
||||||
|
|
||||||
}
|
|
||||||
9
.vscode/solution-explorer/class.vb-template
vendored
9
.vscode/solution-explorer/class.vb-template
vendored
@@ -1,9 +0,0 @@
|
|||||||
Imports System
|
|
||||||
|
|
||||||
Namespace {{namespace}}
|
|
||||||
|
|
||||||
Public Class {{name}}
|
|
||||||
|
|
||||||
End Class
|
|
||||||
|
|
||||||
End Namespace
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
export default {{name}} {
|
|
||||||
|
|
||||||
}
|
|
||||||
5
.vscode/solution-explorer/enum.cs-template
vendored
5
.vscode/solution-explorer/enum.cs-template
vendored
@@ -1,5 +0,0 @@
|
|||||||
namespace {{namespace}};
|
|
||||||
|
|
||||||
public enum {{name}}
|
|
||||||
{
|
|
||||||
}
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
namespace {{namespace}};
|
|
||||||
|
|
||||||
public interface {{name}}
|
|
||||||
{
|
|
||||||
}
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
export interface {{name}} {
|
|
||||||
|
|
||||||
}
|
|
||||||
46
.vscode/solution-explorer/template-list.json
vendored
46
.vscode/solution-explorer/template-list.json
vendored
@@ -1,46 +0,0 @@
|
|||||||
{
|
|
||||||
"templates": [
|
|
||||||
{
|
|
||||||
"name": "Class",
|
|
||||||
"extension": "cs",
|
|
||||||
"file": "./class.cs-template",
|
|
||||||
"parameters": "./template-parameters.js"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Interface",
|
|
||||||
"extension": "cs",
|
|
||||||
"file": "./interface.cs-template",
|
|
||||||
"parameters": "./template-parameters.js"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Enum",
|
|
||||||
"extension": "cs",
|
|
||||||
"file": "./enum.cs-template",
|
|
||||||
"parameters": "./template-parameters.js"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Class",
|
|
||||||
"extension": "ts",
|
|
||||||
"file": "./class.ts-template",
|
|
||||||
"parameters": "./template-parameters.js"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Interface",
|
|
||||||
"extension": "ts",
|
|
||||||
"file": "./interface.ts-template",
|
|
||||||
"parameters": "./template-parameters.js"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Default",
|
|
||||||
"extension": "ts",
|
|
||||||
"file": "./default.ts-template",
|
|
||||||
"parameters": "./template-parameters.js"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Class",
|
|
||||||
"extension": "vb",
|
|
||||||
"file": "./class.vb-template",
|
|
||||||
"parameters": "./template-parameters.js"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
17
.vscode/solution-explorer/template-parameters.js
vendored
17
.vscode/solution-explorer/template-parameters.js
vendored
@@ -1,17 +0,0 @@
|
|||||||
var path = require("path");
|
|
||||||
|
|
||||||
module.exports = function(filename, projectPath, folderPath) {
|
|
||||||
var namespace = "Unknown";
|
|
||||||
if (projectPath) {
|
|
||||||
namespace = path.basename(projectPath, path.extname(projectPath));
|
|
||||||
if (folderPath) {
|
|
||||||
namespace += "." + folderPath.replace(path.dirname(projectPath), "").substring(1).replace(/[\\\/]/g, ".");
|
|
||||||
}
|
|
||||||
namespace = namespace.replace(/[\\\-]/g, "_");
|
|
||||||
}
|
|
||||||
|
|
||||||
return {
|
|
||||||
namespace: namespace,
|
|
||||||
name: path.basename(filename, path.extname(filename))
|
|
||||||
}
|
|
||||||
};
|
|
||||||
42
.vscode/tasks.json
vendored
42
.vscode/tasks.json
vendored
@@ -1,42 +0,0 @@
|
|||||||
{
|
|
||||||
"version": "2.0.0",
|
|
||||||
"tasks": [
|
|
||||||
{
|
|
||||||
"label": "build",
|
|
||||||
"command": "dotnet",
|
|
||||||
"type": "process",
|
|
||||||
"args": [
|
|
||||||
"build",
|
|
||||||
"${workspaceFolder}/DiscordBot/DiscordBot.csproj",
|
|
||||||
"/property:GenerateFullPaths=true",
|
|
||||||
"/consoleloggerparameters:NoSummary"
|
|
||||||
],
|
|
||||||
"problemMatcher": "$msCompile"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"label": "publish",
|
|
||||||
"command": "dotnet",
|
|
||||||
"type": "process",
|
|
||||||
"args": [
|
|
||||||
"publish",
|
|
||||||
"${workspaceFolder}/DiscordBot/DiscordBot.csproj",
|
|
||||||
"/property:GenerateFullPaths=true",
|
|
||||||
"/consoleloggerparameters:NoSummary"
|
|
||||||
],
|
|
||||||
"problemMatcher": "$msCompile"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"label": "watch",
|
|
||||||
"command": "dotnet",
|
|
||||||
"type": "process",
|
|
||||||
"args": [
|
|
||||||
"watch",
|
|
||||||
"run",
|
|
||||||
"${workspaceFolder}/DiscordBot/DiscordBot.csproj",
|
|
||||||
"/property:GenerateFullPaths=true",
|
|
||||||
"/consoleloggerparameters:NoSummary"
|
|
||||||
],
|
|
||||||
"problemMatcher": "$msCompile"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1,268 +0,0 @@
|
|||||||
{
|
|
||||||
"runtimeTarget": {
|
|
||||||
"name": ".NETCoreApp,Version=v5.0",
|
|
||||||
"signature": ""
|
|
||||||
},
|
|
||||||
"compilationOptions": {},
|
|
||||||
"targets": {
|
|
||||||
".NETCoreApp,Version=v5.0": {
|
|
||||||
"CMD_LevelingSystem/1.0.0": {
|
|
||||||
"dependencies": {
|
|
||||||
"PluginManager": "1.0.0"
|
|
||||||
},
|
|
||||||
"runtime": {
|
|
||||||
"CMD_LevelingSystem.dll": {}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Discord.Net/3.5.0": {
|
|
||||||
"dependencies": {
|
|
||||||
"Discord.Net.Commands": "3.5.0",
|
|
||||||
"Discord.Net.Core": "3.5.0",
|
|
||||||
"Discord.Net.Interactions": "3.5.0",
|
|
||||||
"Discord.Net.Rest": "3.5.0",
|
|
||||||
"Discord.Net.WebSocket": "3.5.0",
|
|
||||||
"Discord.Net.Webhook": "3.5.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Discord.Net.Commands/3.5.0": {
|
|
||||||
"dependencies": {
|
|
||||||
"Discord.Net.Core": "3.5.0"
|
|
||||||
},
|
|
||||||
"runtime": {
|
|
||||||
"lib/net5.0/Discord.Net.Commands.dll": {
|
|
||||||
"assemblyVersion": "3.5.0.0",
|
|
||||||
"fileVersion": "3.5.0.0"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Discord.Net.Core/3.5.0": {
|
|
||||||
"dependencies": {
|
|
||||||
"Newtonsoft.Json": "13.0.1",
|
|
||||||
"System.Collections.Immutable": "5.0.0",
|
|
||||||
"System.Interactive.Async": "5.0.0",
|
|
||||||
"System.ValueTuple": "4.5.0"
|
|
||||||
},
|
|
||||||
"runtime": {
|
|
||||||
"lib/net5.0/Discord.Net.Core.dll": {
|
|
||||||
"assemblyVersion": "3.5.0.0",
|
|
||||||
"fileVersion": "3.5.0.0"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Discord.Net.Interactions/3.5.0": {
|
|
||||||
"dependencies": {
|
|
||||||
"Discord.Net.Core": "3.5.0",
|
|
||||||
"Discord.Net.Rest": "3.5.0",
|
|
||||||
"Discord.Net.WebSocket": "3.5.0",
|
|
||||||
"Microsoft.Extensions.DependencyInjection.Abstractions": "5.0.0",
|
|
||||||
"System.Collections.Immutable": "5.0.0",
|
|
||||||
"System.Reactive": "5.0.0"
|
|
||||||
},
|
|
||||||
"runtime": {
|
|
||||||
"lib/net5.0/Discord.Net.Interactions.dll": {
|
|
||||||
"assemblyVersion": "3.5.0.0",
|
|
||||||
"fileVersion": "3.5.0.0"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Discord.Net.Rest/3.5.0": {
|
|
||||||
"dependencies": {
|
|
||||||
"Discord.Net.Core": "3.5.0"
|
|
||||||
},
|
|
||||||
"runtime": {
|
|
||||||
"lib/net5.0/Discord.Net.Rest.dll": {
|
|
||||||
"assemblyVersion": "3.5.0.0",
|
|
||||||
"fileVersion": "3.5.0.0"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Discord.Net.Webhook/3.5.0": {
|
|
||||||
"dependencies": {
|
|
||||||
"Discord.Net.Core": "3.5.0",
|
|
||||||
"Discord.Net.Rest": "3.5.0"
|
|
||||||
},
|
|
||||||
"runtime": {
|
|
||||||
"lib/net5.0/Discord.Net.Webhook.dll": {
|
|
||||||
"assemblyVersion": "3.5.0.0",
|
|
||||||
"fileVersion": "3.5.0.0"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Discord.Net.WebSocket/3.5.0": {
|
|
||||||
"dependencies": {
|
|
||||||
"Discord.Net.Core": "3.5.0",
|
|
||||||
"Discord.Net.Rest": "3.5.0"
|
|
||||||
},
|
|
||||||
"runtime": {
|
|
||||||
"lib/net5.0/Discord.Net.WebSocket.dll": {
|
|
||||||
"assemblyVersion": "3.5.0.0",
|
|
||||||
"fileVersion": "3.5.0.0"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Microsoft.Extensions.DependencyInjection.Abstractions/5.0.0": {
|
|
||||||
"runtime": {
|
|
||||||
"lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": {
|
|
||||||
"assemblyVersion": "5.0.0.0",
|
|
||||||
"fileVersion": "5.0.20.51904"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Newtonsoft.Json/13.0.1": {
|
|
||||||
"runtime": {
|
|
||||||
"lib/netstandard2.0/Newtonsoft.Json.dll": {
|
|
||||||
"assemblyVersion": "13.0.0.0",
|
|
||||||
"fileVersion": "13.0.1.25517"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"System.Collections.Immutable/5.0.0": {},
|
|
||||||
"System.Interactive.Async/5.0.0": {
|
|
||||||
"dependencies": {
|
|
||||||
"System.Linq.Async": "5.0.0"
|
|
||||||
},
|
|
||||||
"runtime": {
|
|
||||||
"lib/netcoreapp3.1/System.Interactive.Async.dll": {
|
|
||||||
"assemblyVersion": "5.0.0.0",
|
|
||||||
"fileVersion": "5.0.0.1"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"System.Linq.Async/5.0.0": {
|
|
||||||
"runtime": {
|
|
||||||
"lib/netcoreapp3.1/System.Linq.Async.dll": {
|
|
||||||
"assemblyVersion": "5.0.0.0",
|
|
||||||
"fileVersion": "5.0.0.1"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"System.Reactive/5.0.0": {
|
|
||||||
"runtime": {
|
|
||||||
"lib/net5.0/System.Reactive.dll": {
|
|
||||||
"assemblyVersion": "5.0.0.0",
|
|
||||||
"fileVersion": "5.0.0.1"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"System.ValueTuple/4.5.0": {},
|
|
||||||
"PluginManager/1.0.0": {
|
|
||||||
"dependencies": {
|
|
||||||
"Discord.Net": "3.5.0"
|
|
||||||
},
|
|
||||||
"runtime": {
|
|
||||||
"PluginManager.dll": {}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"libraries": {
|
|
||||||
"CMD_LevelingSystem/1.0.0": {
|
|
||||||
"type": "project",
|
|
||||||
"serviceable": false,
|
|
||||||
"sha512": ""
|
|
||||||
},
|
|
||||||
"Discord.Net/3.5.0": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-IUtexpvogudb1rllKBWkIEpBVQoToMjtVo81KPkt+gNMe7KtRDcZJgcn6+72viMtyw0e95OJPXFV5VEA/n2OQQ==",
|
|
||||||
"path": "discord.net/3.5.0",
|
|
||||||
"hashPath": "discord.net.3.5.0.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"Discord.Net.Commands/3.5.0": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-ClTv8aiTlitvS48YatRiTLvgE2f2uKgmHNPVBIuvJBHZO2u4bZCzoN1fid+pZn2sbVOkt8uftlLGzz5DSZlFIA==",
|
|
||||||
"path": "discord.net.commands/3.5.0",
|
|
||||||
"hashPath": "discord.net.commands.3.5.0.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"Discord.Net.Core/3.5.0": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-rCzzaznMVQ+bLMxOpYwTyqm9V22kMy6BxlQisSxemHZDe2Jedz3Clp/a0dToACLz+Dlp3u+jYUfCBnTz7L6f4g==",
|
|
||||||
"path": "discord.net.core/3.5.0",
|
|
||||||
"hashPath": "discord.net.core.3.5.0.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"Discord.Net.Interactions/3.5.0": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-wE9+V9DJ7r+1s4euOi4sGPIAt4sD7r+Tk5s9mrlbLCHVQTK4KllAvcrL25bPFI38FuFceREEzFoRlTrekSyB2Q==",
|
|
||||||
"path": "discord.net.interactions/3.5.0",
|
|
||||||
"hashPath": "discord.net.interactions.3.5.0.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"Discord.Net.Rest/3.5.0": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-BnTdLFuuQsKvCv08VQrD4X1Hw2Xp+MELIRQiDiKfG01IiQlRTN+1gc3LB1zXgn5xBvC0HXjHxwV22GrMD9uKHQ==",
|
|
||||||
"path": "discord.net.rest/3.5.0",
|
|
||||||
"hashPath": "discord.net.rest.3.5.0.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"Discord.Net.Webhook/3.5.0": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-vCIGZS+m88sQDuFmdbUqg+2RIXS/NJWx8ei3MX+ZEYiAvOkDgQfkIlEnU1NKpds6ivTt5GFlv6UzcWubb5VJ1w==",
|
|
||||||
"path": "discord.net.webhook/3.5.0",
|
|
||||||
"hashPath": "discord.net.webhook.3.5.0.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"Discord.Net.WebSocket/3.5.0": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-LjBOvcP40vJ+dhOtBDi8haEeblPAKpAIqR04NBzTM1/0RVavJZH89ovfSQIk42ygkiOaDV4E2x0Mmh6DRoIYcw==",
|
|
||||||
"path": "discord.net.websocket/3.5.0",
|
|
||||||
"hashPath": "discord.net.websocket.3.5.0.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"Microsoft.Extensions.DependencyInjection.Abstractions/5.0.0": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-ORj7Zh81gC69TyvmcUm9tSzytcy8AVousi+IVRAI8nLieQjOFryRusSFh7+aLk16FN9pQNqJAiMd7BTKINK0kA==",
|
|
||||||
"path": "microsoft.extensions.dependencyinjection.abstractions/5.0.0",
|
|
||||||
"hashPath": "microsoft.extensions.dependencyinjection.abstractions.5.0.0.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"Newtonsoft.Json/13.0.1": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-ppPFpBcvxdsfUonNcvITKqLl3bqxWbDCZIzDWHzjpdAHRFfZe0Dw9HmA0+za13IdyrgJwpkDTDA9fHaxOrt20A==",
|
|
||||||
"path": "newtonsoft.json/13.0.1",
|
|
||||||
"hashPath": "newtonsoft.json.13.0.1.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"System.Collections.Immutable/5.0.0": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-FXkLXiK0sVVewcso0imKQoOxjoPAj42R8HtjjbSjVPAzwDfzoyoznWxgA3c38LDbN9SJux1xXoXYAhz98j7r2g==",
|
|
||||||
"path": "system.collections.immutable/5.0.0",
|
|
||||||
"hashPath": "system.collections.immutable.5.0.0.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"System.Interactive.Async/5.0.0": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-QaqhQVDiULcu4vm6o89+iP329HcK44cETHOYgy/jfEjtzeFy0ZxmuM7nel9ocjnKxEM4yh1mli7hgh8Q9o+/Iw==",
|
|
||||||
"path": "system.interactive.async/5.0.0",
|
|
||||||
"hashPath": "system.interactive.async.5.0.0.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"System.Linq.Async/5.0.0": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-cPtIuuH8TIjVHSi2ewwReWGW1PfChPE0LxPIDlfwVcLuTM9GANFTXiMB7k3aC4sk3f0cQU25LNKzx+jZMxijqw==",
|
|
||||||
"path": "system.linq.async/5.0.0",
|
|
||||||
"hashPath": "system.linq.async.5.0.0.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"System.Reactive/5.0.0": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-erBZjkQHWL9jpasCE/0qKAryzVBJFxGHVBAvgRN1bzM0q2s1S4oYREEEL0Vb+1kA/6BKb5FjUZMp5VXmy+gzkQ==",
|
|
||||||
"path": "system.reactive/5.0.0",
|
|
||||||
"hashPath": "system.reactive.5.0.0.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"System.ValueTuple/4.5.0": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-okurQJO6NRE/apDIP23ajJ0hpiNmJ+f0BwOlB/cSqTLQlw5upkf+5+96+iG2Jw40G1fCVCyPz/FhIABUjMR+RQ==",
|
|
||||||
"path": "system.valuetuple/4.5.0",
|
|
||||||
"hashPath": "system.valuetuple.4.5.0.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"PluginManager/1.0.0": {
|
|
||||||
"type": "project",
|
|
||||||
"serviceable": false,
|
|
||||||
"sha512": ""
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Binary file not shown.
@@ -1,268 +0,0 @@
|
|||||||
{
|
|
||||||
"runtimeTarget": {
|
|
||||||
"name": ".NETCoreApp,Version=v5.0",
|
|
||||||
"signature": ""
|
|
||||||
},
|
|
||||||
"compilationOptions": {},
|
|
||||||
"targets": {
|
|
||||||
".NETCoreApp,Version=v5.0": {
|
|
||||||
"CMD_Utils/1.0.0": {
|
|
||||||
"dependencies": {
|
|
||||||
"PluginManager": "1.0.0"
|
|
||||||
},
|
|
||||||
"runtime": {
|
|
||||||
"CMD_Utils.dll": {}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Discord.Net/3.5.0": {
|
|
||||||
"dependencies": {
|
|
||||||
"Discord.Net.Commands": "3.5.0",
|
|
||||||
"Discord.Net.Core": "3.5.0",
|
|
||||||
"Discord.Net.Interactions": "3.5.0",
|
|
||||||
"Discord.Net.Rest": "3.5.0",
|
|
||||||
"Discord.Net.WebSocket": "3.5.0",
|
|
||||||
"Discord.Net.Webhook": "3.5.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Discord.Net.Commands/3.5.0": {
|
|
||||||
"dependencies": {
|
|
||||||
"Discord.Net.Core": "3.5.0"
|
|
||||||
},
|
|
||||||
"runtime": {
|
|
||||||
"lib/net5.0/Discord.Net.Commands.dll": {
|
|
||||||
"assemblyVersion": "3.5.0.0",
|
|
||||||
"fileVersion": "3.5.0.0"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Discord.Net.Core/3.5.0": {
|
|
||||||
"dependencies": {
|
|
||||||
"Newtonsoft.Json": "13.0.1",
|
|
||||||
"System.Collections.Immutable": "5.0.0",
|
|
||||||
"System.Interactive.Async": "5.0.0",
|
|
||||||
"System.ValueTuple": "4.5.0"
|
|
||||||
},
|
|
||||||
"runtime": {
|
|
||||||
"lib/net5.0/Discord.Net.Core.dll": {
|
|
||||||
"assemblyVersion": "3.5.0.0",
|
|
||||||
"fileVersion": "3.5.0.0"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Discord.Net.Interactions/3.5.0": {
|
|
||||||
"dependencies": {
|
|
||||||
"Discord.Net.Core": "3.5.0",
|
|
||||||
"Discord.Net.Rest": "3.5.0",
|
|
||||||
"Discord.Net.WebSocket": "3.5.0",
|
|
||||||
"Microsoft.Extensions.DependencyInjection.Abstractions": "5.0.0",
|
|
||||||
"System.Collections.Immutable": "5.0.0",
|
|
||||||
"System.Reactive": "5.0.0"
|
|
||||||
},
|
|
||||||
"runtime": {
|
|
||||||
"lib/net5.0/Discord.Net.Interactions.dll": {
|
|
||||||
"assemblyVersion": "3.5.0.0",
|
|
||||||
"fileVersion": "3.5.0.0"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Discord.Net.Rest/3.5.0": {
|
|
||||||
"dependencies": {
|
|
||||||
"Discord.Net.Core": "3.5.0"
|
|
||||||
},
|
|
||||||
"runtime": {
|
|
||||||
"lib/net5.0/Discord.Net.Rest.dll": {
|
|
||||||
"assemblyVersion": "3.5.0.0",
|
|
||||||
"fileVersion": "3.5.0.0"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Discord.Net.Webhook/3.5.0": {
|
|
||||||
"dependencies": {
|
|
||||||
"Discord.Net.Core": "3.5.0",
|
|
||||||
"Discord.Net.Rest": "3.5.0"
|
|
||||||
},
|
|
||||||
"runtime": {
|
|
||||||
"lib/net5.0/Discord.Net.Webhook.dll": {
|
|
||||||
"assemblyVersion": "3.5.0.0",
|
|
||||||
"fileVersion": "3.5.0.0"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Discord.Net.WebSocket/3.5.0": {
|
|
||||||
"dependencies": {
|
|
||||||
"Discord.Net.Core": "3.5.0",
|
|
||||||
"Discord.Net.Rest": "3.5.0"
|
|
||||||
},
|
|
||||||
"runtime": {
|
|
||||||
"lib/net5.0/Discord.Net.WebSocket.dll": {
|
|
||||||
"assemblyVersion": "3.5.0.0",
|
|
||||||
"fileVersion": "3.5.0.0"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Microsoft.Extensions.DependencyInjection.Abstractions/5.0.0": {
|
|
||||||
"runtime": {
|
|
||||||
"lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": {
|
|
||||||
"assemblyVersion": "5.0.0.0",
|
|
||||||
"fileVersion": "5.0.20.51904"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Newtonsoft.Json/13.0.1": {
|
|
||||||
"runtime": {
|
|
||||||
"lib/netstandard2.0/Newtonsoft.Json.dll": {
|
|
||||||
"assemblyVersion": "13.0.0.0",
|
|
||||||
"fileVersion": "13.0.1.25517"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"System.Collections.Immutable/5.0.0": {},
|
|
||||||
"System.Interactive.Async/5.0.0": {
|
|
||||||
"dependencies": {
|
|
||||||
"System.Linq.Async": "5.0.0"
|
|
||||||
},
|
|
||||||
"runtime": {
|
|
||||||
"lib/netcoreapp3.1/System.Interactive.Async.dll": {
|
|
||||||
"assemblyVersion": "5.0.0.0",
|
|
||||||
"fileVersion": "5.0.0.1"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"System.Linq.Async/5.0.0": {
|
|
||||||
"runtime": {
|
|
||||||
"lib/netcoreapp3.1/System.Linq.Async.dll": {
|
|
||||||
"assemblyVersion": "5.0.0.0",
|
|
||||||
"fileVersion": "5.0.0.1"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"System.Reactive/5.0.0": {
|
|
||||||
"runtime": {
|
|
||||||
"lib/net5.0/System.Reactive.dll": {
|
|
||||||
"assemblyVersion": "5.0.0.0",
|
|
||||||
"fileVersion": "5.0.0.1"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"System.ValueTuple/4.5.0": {},
|
|
||||||
"PluginManager/1.0.0": {
|
|
||||||
"dependencies": {
|
|
||||||
"Discord.Net": "3.5.0"
|
|
||||||
},
|
|
||||||
"runtime": {
|
|
||||||
"PluginManager.dll": {}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"libraries": {
|
|
||||||
"CMD_Utils/1.0.0": {
|
|
||||||
"type": "project",
|
|
||||||
"serviceable": false,
|
|
||||||
"sha512": ""
|
|
||||||
},
|
|
||||||
"Discord.Net/3.5.0": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-IUtexpvogudb1rllKBWkIEpBVQoToMjtVo81KPkt+gNMe7KtRDcZJgcn6+72viMtyw0e95OJPXFV5VEA/n2OQQ==",
|
|
||||||
"path": "discord.net/3.5.0",
|
|
||||||
"hashPath": "discord.net.3.5.0.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"Discord.Net.Commands/3.5.0": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-ClTv8aiTlitvS48YatRiTLvgE2f2uKgmHNPVBIuvJBHZO2u4bZCzoN1fid+pZn2sbVOkt8uftlLGzz5DSZlFIA==",
|
|
||||||
"path": "discord.net.commands/3.5.0",
|
|
||||||
"hashPath": "discord.net.commands.3.5.0.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"Discord.Net.Core/3.5.0": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-rCzzaznMVQ+bLMxOpYwTyqm9V22kMy6BxlQisSxemHZDe2Jedz3Clp/a0dToACLz+Dlp3u+jYUfCBnTz7L6f4g==",
|
|
||||||
"path": "discord.net.core/3.5.0",
|
|
||||||
"hashPath": "discord.net.core.3.5.0.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"Discord.Net.Interactions/3.5.0": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-wE9+V9DJ7r+1s4euOi4sGPIAt4sD7r+Tk5s9mrlbLCHVQTK4KllAvcrL25bPFI38FuFceREEzFoRlTrekSyB2Q==",
|
|
||||||
"path": "discord.net.interactions/3.5.0",
|
|
||||||
"hashPath": "discord.net.interactions.3.5.0.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"Discord.Net.Rest/3.5.0": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-BnTdLFuuQsKvCv08VQrD4X1Hw2Xp+MELIRQiDiKfG01IiQlRTN+1gc3LB1zXgn5xBvC0HXjHxwV22GrMD9uKHQ==",
|
|
||||||
"path": "discord.net.rest/3.5.0",
|
|
||||||
"hashPath": "discord.net.rest.3.5.0.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"Discord.Net.Webhook/3.5.0": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-vCIGZS+m88sQDuFmdbUqg+2RIXS/NJWx8ei3MX+ZEYiAvOkDgQfkIlEnU1NKpds6ivTt5GFlv6UzcWubb5VJ1w==",
|
|
||||||
"path": "discord.net.webhook/3.5.0",
|
|
||||||
"hashPath": "discord.net.webhook.3.5.0.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"Discord.Net.WebSocket/3.5.0": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-LjBOvcP40vJ+dhOtBDi8haEeblPAKpAIqR04NBzTM1/0RVavJZH89ovfSQIk42ygkiOaDV4E2x0Mmh6DRoIYcw==",
|
|
||||||
"path": "discord.net.websocket/3.5.0",
|
|
||||||
"hashPath": "discord.net.websocket.3.5.0.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"Microsoft.Extensions.DependencyInjection.Abstractions/5.0.0": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-ORj7Zh81gC69TyvmcUm9tSzytcy8AVousi+IVRAI8nLieQjOFryRusSFh7+aLk16FN9pQNqJAiMd7BTKINK0kA==",
|
|
||||||
"path": "microsoft.extensions.dependencyinjection.abstractions/5.0.0",
|
|
||||||
"hashPath": "microsoft.extensions.dependencyinjection.abstractions.5.0.0.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"Newtonsoft.Json/13.0.1": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-ppPFpBcvxdsfUonNcvITKqLl3bqxWbDCZIzDWHzjpdAHRFfZe0Dw9HmA0+za13IdyrgJwpkDTDA9fHaxOrt20A==",
|
|
||||||
"path": "newtonsoft.json/13.0.1",
|
|
||||||
"hashPath": "newtonsoft.json.13.0.1.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"System.Collections.Immutable/5.0.0": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-FXkLXiK0sVVewcso0imKQoOxjoPAj42R8HtjjbSjVPAzwDfzoyoznWxgA3c38LDbN9SJux1xXoXYAhz98j7r2g==",
|
|
||||||
"path": "system.collections.immutable/5.0.0",
|
|
||||||
"hashPath": "system.collections.immutable.5.0.0.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"System.Interactive.Async/5.0.0": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-QaqhQVDiULcu4vm6o89+iP329HcK44cETHOYgy/jfEjtzeFy0ZxmuM7nel9ocjnKxEM4yh1mli7hgh8Q9o+/Iw==",
|
|
||||||
"path": "system.interactive.async/5.0.0",
|
|
||||||
"hashPath": "system.interactive.async.5.0.0.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"System.Linq.Async/5.0.0": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-cPtIuuH8TIjVHSi2ewwReWGW1PfChPE0LxPIDlfwVcLuTM9GANFTXiMB7k3aC4sk3f0cQU25LNKzx+jZMxijqw==",
|
|
||||||
"path": "system.linq.async/5.0.0",
|
|
||||||
"hashPath": "system.linq.async.5.0.0.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"System.Reactive/5.0.0": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-erBZjkQHWL9jpasCE/0qKAryzVBJFxGHVBAvgRN1bzM0q2s1S4oYREEEL0Vb+1kA/6BKb5FjUZMp5VXmy+gzkQ==",
|
|
||||||
"path": "system.reactive/5.0.0",
|
|
||||||
"hashPath": "system.reactive.5.0.0.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"System.ValueTuple/4.5.0": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-okurQJO6NRE/apDIP23ajJ0hpiNmJ+f0BwOlB/cSqTLQlw5upkf+5+96+iG2Jw40G1fCVCyPz/FhIABUjMR+RQ==",
|
|
||||||
"path": "system.valuetuple/4.5.0",
|
|
||||||
"hashPath": "system.valuetuple.4.5.0.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"PluginManager/1.0.0": {
|
|
||||||
"type": "project",
|
|
||||||
"serviceable": false,
|
|
||||||
"sha512": ""
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Binary file not shown.
@@ -1,268 +0,0 @@
|
|||||||
{
|
|
||||||
"runtimeTarget": {
|
|
||||||
"name": ".NETCoreApp,Version=v5.0",
|
|
||||||
"signature": ""
|
|
||||||
},
|
|
||||||
"compilationOptions": {},
|
|
||||||
"targets": {
|
|
||||||
".NETCoreApp,Version=v5.0": {
|
|
||||||
"EVE_LevelingSystem/1.0.0": {
|
|
||||||
"dependencies": {
|
|
||||||
"PluginManager": "1.0.0"
|
|
||||||
},
|
|
||||||
"runtime": {
|
|
||||||
"EVE_LevelingSystem.dll": {}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Discord.Net/3.5.0": {
|
|
||||||
"dependencies": {
|
|
||||||
"Discord.Net.Commands": "3.5.0",
|
|
||||||
"Discord.Net.Core": "3.5.0",
|
|
||||||
"Discord.Net.Interactions": "3.5.0",
|
|
||||||
"Discord.Net.Rest": "3.5.0",
|
|
||||||
"Discord.Net.WebSocket": "3.5.0",
|
|
||||||
"Discord.Net.Webhook": "3.5.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Discord.Net.Commands/3.5.0": {
|
|
||||||
"dependencies": {
|
|
||||||
"Discord.Net.Core": "3.5.0"
|
|
||||||
},
|
|
||||||
"runtime": {
|
|
||||||
"lib/net5.0/Discord.Net.Commands.dll": {
|
|
||||||
"assemblyVersion": "3.5.0.0",
|
|
||||||
"fileVersion": "3.5.0.0"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Discord.Net.Core/3.5.0": {
|
|
||||||
"dependencies": {
|
|
||||||
"Newtonsoft.Json": "13.0.1",
|
|
||||||
"System.Collections.Immutable": "5.0.0",
|
|
||||||
"System.Interactive.Async": "5.0.0",
|
|
||||||
"System.ValueTuple": "4.5.0"
|
|
||||||
},
|
|
||||||
"runtime": {
|
|
||||||
"lib/net5.0/Discord.Net.Core.dll": {
|
|
||||||
"assemblyVersion": "3.5.0.0",
|
|
||||||
"fileVersion": "3.5.0.0"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Discord.Net.Interactions/3.5.0": {
|
|
||||||
"dependencies": {
|
|
||||||
"Discord.Net.Core": "3.5.0",
|
|
||||||
"Discord.Net.Rest": "3.5.0",
|
|
||||||
"Discord.Net.WebSocket": "3.5.0",
|
|
||||||
"Microsoft.Extensions.DependencyInjection.Abstractions": "5.0.0",
|
|
||||||
"System.Collections.Immutable": "5.0.0",
|
|
||||||
"System.Reactive": "5.0.0"
|
|
||||||
},
|
|
||||||
"runtime": {
|
|
||||||
"lib/net5.0/Discord.Net.Interactions.dll": {
|
|
||||||
"assemblyVersion": "3.5.0.0",
|
|
||||||
"fileVersion": "3.5.0.0"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Discord.Net.Rest/3.5.0": {
|
|
||||||
"dependencies": {
|
|
||||||
"Discord.Net.Core": "3.5.0"
|
|
||||||
},
|
|
||||||
"runtime": {
|
|
||||||
"lib/net5.0/Discord.Net.Rest.dll": {
|
|
||||||
"assemblyVersion": "3.5.0.0",
|
|
||||||
"fileVersion": "3.5.0.0"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Discord.Net.Webhook/3.5.0": {
|
|
||||||
"dependencies": {
|
|
||||||
"Discord.Net.Core": "3.5.0",
|
|
||||||
"Discord.Net.Rest": "3.5.0"
|
|
||||||
},
|
|
||||||
"runtime": {
|
|
||||||
"lib/net5.0/Discord.Net.Webhook.dll": {
|
|
||||||
"assemblyVersion": "3.5.0.0",
|
|
||||||
"fileVersion": "3.5.0.0"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Discord.Net.WebSocket/3.5.0": {
|
|
||||||
"dependencies": {
|
|
||||||
"Discord.Net.Core": "3.5.0",
|
|
||||||
"Discord.Net.Rest": "3.5.0"
|
|
||||||
},
|
|
||||||
"runtime": {
|
|
||||||
"lib/net5.0/Discord.Net.WebSocket.dll": {
|
|
||||||
"assemblyVersion": "3.5.0.0",
|
|
||||||
"fileVersion": "3.5.0.0"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Microsoft.Extensions.DependencyInjection.Abstractions/5.0.0": {
|
|
||||||
"runtime": {
|
|
||||||
"lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": {
|
|
||||||
"assemblyVersion": "5.0.0.0",
|
|
||||||
"fileVersion": "5.0.20.51904"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Newtonsoft.Json/13.0.1": {
|
|
||||||
"runtime": {
|
|
||||||
"lib/netstandard2.0/Newtonsoft.Json.dll": {
|
|
||||||
"assemblyVersion": "13.0.0.0",
|
|
||||||
"fileVersion": "13.0.1.25517"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"System.Collections.Immutable/5.0.0": {},
|
|
||||||
"System.Interactive.Async/5.0.0": {
|
|
||||||
"dependencies": {
|
|
||||||
"System.Linq.Async": "5.0.0"
|
|
||||||
},
|
|
||||||
"runtime": {
|
|
||||||
"lib/netcoreapp3.1/System.Interactive.Async.dll": {
|
|
||||||
"assemblyVersion": "5.0.0.0",
|
|
||||||
"fileVersion": "5.0.0.1"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"System.Linq.Async/5.0.0": {
|
|
||||||
"runtime": {
|
|
||||||
"lib/netcoreapp3.1/System.Linq.Async.dll": {
|
|
||||||
"assemblyVersion": "5.0.0.0",
|
|
||||||
"fileVersion": "5.0.0.1"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"System.Reactive/5.0.0": {
|
|
||||||
"runtime": {
|
|
||||||
"lib/net5.0/System.Reactive.dll": {
|
|
||||||
"assemblyVersion": "5.0.0.0",
|
|
||||||
"fileVersion": "5.0.0.1"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"System.ValueTuple/4.5.0": {},
|
|
||||||
"PluginManager/1.0.0": {
|
|
||||||
"dependencies": {
|
|
||||||
"Discord.Net": "3.5.0"
|
|
||||||
},
|
|
||||||
"runtime": {
|
|
||||||
"PluginManager.dll": {}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"libraries": {
|
|
||||||
"EVE_LevelingSystem/1.0.0": {
|
|
||||||
"type": "project",
|
|
||||||
"serviceable": false,
|
|
||||||
"sha512": ""
|
|
||||||
},
|
|
||||||
"Discord.Net/3.5.0": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-IUtexpvogudb1rllKBWkIEpBVQoToMjtVo81KPkt+gNMe7KtRDcZJgcn6+72viMtyw0e95OJPXFV5VEA/n2OQQ==",
|
|
||||||
"path": "discord.net/3.5.0",
|
|
||||||
"hashPath": "discord.net.3.5.0.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"Discord.Net.Commands/3.5.0": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-ClTv8aiTlitvS48YatRiTLvgE2f2uKgmHNPVBIuvJBHZO2u4bZCzoN1fid+pZn2sbVOkt8uftlLGzz5DSZlFIA==",
|
|
||||||
"path": "discord.net.commands/3.5.0",
|
|
||||||
"hashPath": "discord.net.commands.3.5.0.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"Discord.Net.Core/3.5.0": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-rCzzaznMVQ+bLMxOpYwTyqm9V22kMy6BxlQisSxemHZDe2Jedz3Clp/a0dToACLz+Dlp3u+jYUfCBnTz7L6f4g==",
|
|
||||||
"path": "discord.net.core/3.5.0",
|
|
||||||
"hashPath": "discord.net.core.3.5.0.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"Discord.Net.Interactions/3.5.0": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-wE9+V9DJ7r+1s4euOi4sGPIAt4sD7r+Tk5s9mrlbLCHVQTK4KllAvcrL25bPFI38FuFceREEzFoRlTrekSyB2Q==",
|
|
||||||
"path": "discord.net.interactions/3.5.0",
|
|
||||||
"hashPath": "discord.net.interactions.3.5.0.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"Discord.Net.Rest/3.5.0": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-BnTdLFuuQsKvCv08VQrD4X1Hw2Xp+MELIRQiDiKfG01IiQlRTN+1gc3LB1zXgn5xBvC0HXjHxwV22GrMD9uKHQ==",
|
|
||||||
"path": "discord.net.rest/3.5.0",
|
|
||||||
"hashPath": "discord.net.rest.3.5.0.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"Discord.Net.Webhook/3.5.0": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-vCIGZS+m88sQDuFmdbUqg+2RIXS/NJWx8ei3MX+ZEYiAvOkDgQfkIlEnU1NKpds6ivTt5GFlv6UzcWubb5VJ1w==",
|
|
||||||
"path": "discord.net.webhook/3.5.0",
|
|
||||||
"hashPath": "discord.net.webhook.3.5.0.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"Discord.Net.WebSocket/3.5.0": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-LjBOvcP40vJ+dhOtBDi8haEeblPAKpAIqR04NBzTM1/0RVavJZH89ovfSQIk42ygkiOaDV4E2x0Mmh6DRoIYcw==",
|
|
||||||
"path": "discord.net.websocket/3.5.0",
|
|
||||||
"hashPath": "discord.net.websocket.3.5.0.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"Microsoft.Extensions.DependencyInjection.Abstractions/5.0.0": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-ORj7Zh81gC69TyvmcUm9tSzytcy8AVousi+IVRAI8nLieQjOFryRusSFh7+aLk16FN9pQNqJAiMd7BTKINK0kA==",
|
|
||||||
"path": "microsoft.extensions.dependencyinjection.abstractions/5.0.0",
|
|
||||||
"hashPath": "microsoft.extensions.dependencyinjection.abstractions.5.0.0.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"Newtonsoft.Json/13.0.1": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-ppPFpBcvxdsfUonNcvITKqLl3bqxWbDCZIzDWHzjpdAHRFfZe0Dw9HmA0+za13IdyrgJwpkDTDA9fHaxOrt20A==",
|
|
||||||
"path": "newtonsoft.json/13.0.1",
|
|
||||||
"hashPath": "newtonsoft.json.13.0.1.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"System.Collections.Immutable/5.0.0": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-FXkLXiK0sVVewcso0imKQoOxjoPAj42R8HtjjbSjVPAzwDfzoyoznWxgA3c38LDbN9SJux1xXoXYAhz98j7r2g==",
|
|
||||||
"path": "system.collections.immutable/5.0.0",
|
|
||||||
"hashPath": "system.collections.immutable.5.0.0.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"System.Interactive.Async/5.0.0": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-QaqhQVDiULcu4vm6o89+iP329HcK44cETHOYgy/jfEjtzeFy0ZxmuM7nel9ocjnKxEM4yh1mli7hgh8Q9o+/Iw==",
|
|
||||||
"path": "system.interactive.async/5.0.0",
|
|
||||||
"hashPath": "system.interactive.async.5.0.0.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"System.Linq.Async/5.0.0": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-cPtIuuH8TIjVHSi2ewwReWGW1PfChPE0LxPIDlfwVcLuTM9GANFTXiMB7k3aC4sk3f0cQU25LNKzx+jZMxijqw==",
|
|
||||||
"path": "system.linq.async/5.0.0",
|
|
||||||
"hashPath": "system.linq.async.5.0.0.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"System.Reactive/5.0.0": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-erBZjkQHWL9jpasCE/0qKAryzVBJFxGHVBAvgRN1bzM0q2s1S4oYREEEL0Vb+1kA/6BKb5FjUZMp5VXmy+gzkQ==",
|
|
||||||
"path": "system.reactive/5.0.0",
|
|
||||||
"hashPath": "system.reactive.5.0.0.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"System.ValueTuple/4.5.0": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-okurQJO6NRE/apDIP23ajJ0hpiNmJ+f0BwOlB/cSqTLQlw5upkf+5+96+iG2Jw40G1fCVCyPz/FhIABUjMR+RQ==",
|
|
||||||
"path": "system.valuetuple/4.5.0",
|
|
||||||
"hashPath": "system.valuetuple.4.5.0.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"PluginManager/1.0.0": {
|
|
||||||
"type": "project",
|
|
||||||
"serviceable": false,
|
|
||||||
"sha512": ""
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Binary file not shown.
@@ -1,268 +0,0 @@
|
|||||||
{
|
|
||||||
"runtimeTarget": {
|
|
||||||
"name": ".NETCoreApp,Version=v5.0",
|
|
||||||
"signature": ""
|
|
||||||
},
|
|
||||||
"compilationOptions": {},
|
|
||||||
"targets": {
|
|
||||||
".NETCoreApp,Version=v5.0": {
|
|
||||||
"MusicCommands/1.0.0": {
|
|
||||||
"dependencies": {
|
|
||||||
"PluginManager": "1.0.0"
|
|
||||||
},
|
|
||||||
"runtime": {
|
|
||||||
"MusicCommands.dll": {}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Discord.Net/3.5.0": {
|
|
||||||
"dependencies": {
|
|
||||||
"Discord.Net.Commands": "3.5.0",
|
|
||||||
"Discord.Net.Core": "3.5.0",
|
|
||||||
"Discord.Net.Interactions": "3.5.0",
|
|
||||||
"Discord.Net.Rest": "3.5.0",
|
|
||||||
"Discord.Net.WebSocket": "3.5.0",
|
|
||||||
"Discord.Net.Webhook": "3.5.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Discord.Net.Commands/3.5.0": {
|
|
||||||
"dependencies": {
|
|
||||||
"Discord.Net.Core": "3.5.0"
|
|
||||||
},
|
|
||||||
"runtime": {
|
|
||||||
"lib/net5.0/Discord.Net.Commands.dll": {
|
|
||||||
"assemblyVersion": "3.5.0.0",
|
|
||||||
"fileVersion": "3.5.0.0"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Discord.Net.Core/3.5.0": {
|
|
||||||
"dependencies": {
|
|
||||||
"Newtonsoft.Json": "13.0.1",
|
|
||||||
"System.Collections.Immutable": "5.0.0",
|
|
||||||
"System.Interactive.Async": "5.0.0",
|
|
||||||
"System.ValueTuple": "4.5.0"
|
|
||||||
},
|
|
||||||
"runtime": {
|
|
||||||
"lib/net5.0/Discord.Net.Core.dll": {
|
|
||||||
"assemblyVersion": "3.5.0.0",
|
|
||||||
"fileVersion": "3.5.0.0"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Discord.Net.Interactions/3.5.0": {
|
|
||||||
"dependencies": {
|
|
||||||
"Discord.Net.Core": "3.5.0",
|
|
||||||
"Discord.Net.Rest": "3.5.0",
|
|
||||||
"Discord.Net.WebSocket": "3.5.0",
|
|
||||||
"Microsoft.Extensions.DependencyInjection.Abstractions": "5.0.0",
|
|
||||||
"System.Collections.Immutable": "5.0.0",
|
|
||||||
"System.Reactive": "5.0.0"
|
|
||||||
},
|
|
||||||
"runtime": {
|
|
||||||
"lib/net5.0/Discord.Net.Interactions.dll": {
|
|
||||||
"assemblyVersion": "3.5.0.0",
|
|
||||||
"fileVersion": "3.5.0.0"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Discord.Net.Rest/3.5.0": {
|
|
||||||
"dependencies": {
|
|
||||||
"Discord.Net.Core": "3.5.0"
|
|
||||||
},
|
|
||||||
"runtime": {
|
|
||||||
"lib/net5.0/Discord.Net.Rest.dll": {
|
|
||||||
"assemblyVersion": "3.5.0.0",
|
|
||||||
"fileVersion": "3.5.0.0"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Discord.Net.Webhook/3.5.0": {
|
|
||||||
"dependencies": {
|
|
||||||
"Discord.Net.Core": "3.5.0",
|
|
||||||
"Discord.Net.Rest": "3.5.0"
|
|
||||||
},
|
|
||||||
"runtime": {
|
|
||||||
"lib/net5.0/Discord.Net.Webhook.dll": {
|
|
||||||
"assemblyVersion": "3.5.0.0",
|
|
||||||
"fileVersion": "3.5.0.0"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Discord.Net.WebSocket/3.5.0": {
|
|
||||||
"dependencies": {
|
|
||||||
"Discord.Net.Core": "3.5.0",
|
|
||||||
"Discord.Net.Rest": "3.5.0"
|
|
||||||
},
|
|
||||||
"runtime": {
|
|
||||||
"lib/net5.0/Discord.Net.WebSocket.dll": {
|
|
||||||
"assemblyVersion": "3.5.0.0",
|
|
||||||
"fileVersion": "3.5.0.0"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Microsoft.Extensions.DependencyInjection.Abstractions/5.0.0": {
|
|
||||||
"runtime": {
|
|
||||||
"lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": {
|
|
||||||
"assemblyVersion": "5.0.0.0",
|
|
||||||
"fileVersion": "5.0.20.51904"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Newtonsoft.Json/13.0.1": {
|
|
||||||
"runtime": {
|
|
||||||
"lib/netstandard2.0/Newtonsoft.Json.dll": {
|
|
||||||
"assemblyVersion": "13.0.0.0",
|
|
||||||
"fileVersion": "13.0.1.25517"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"System.Collections.Immutable/5.0.0": {},
|
|
||||||
"System.Interactive.Async/5.0.0": {
|
|
||||||
"dependencies": {
|
|
||||||
"System.Linq.Async": "5.0.0"
|
|
||||||
},
|
|
||||||
"runtime": {
|
|
||||||
"lib/netcoreapp3.1/System.Interactive.Async.dll": {
|
|
||||||
"assemblyVersion": "5.0.0.0",
|
|
||||||
"fileVersion": "5.0.0.1"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"System.Linq.Async/5.0.0": {
|
|
||||||
"runtime": {
|
|
||||||
"lib/netcoreapp3.1/System.Linq.Async.dll": {
|
|
||||||
"assemblyVersion": "5.0.0.0",
|
|
||||||
"fileVersion": "5.0.0.1"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"System.Reactive/5.0.0": {
|
|
||||||
"runtime": {
|
|
||||||
"lib/net5.0/System.Reactive.dll": {
|
|
||||||
"assemblyVersion": "5.0.0.0",
|
|
||||||
"fileVersion": "5.0.0.1"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"System.ValueTuple/4.5.0": {},
|
|
||||||
"PluginManager/1.0.0": {
|
|
||||||
"dependencies": {
|
|
||||||
"Discord.Net": "3.5.0"
|
|
||||||
},
|
|
||||||
"runtime": {
|
|
||||||
"PluginManager.dll": {}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"libraries": {
|
|
||||||
"MusicCommands/1.0.0": {
|
|
||||||
"type": "project",
|
|
||||||
"serviceable": false,
|
|
||||||
"sha512": ""
|
|
||||||
},
|
|
||||||
"Discord.Net/3.5.0": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-IUtexpvogudb1rllKBWkIEpBVQoToMjtVo81KPkt+gNMe7KtRDcZJgcn6+72viMtyw0e95OJPXFV5VEA/n2OQQ==",
|
|
||||||
"path": "discord.net/3.5.0",
|
|
||||||
"hashPath": "discord.net.3.5.0.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"Discord.Net.Commands/3.5.0": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-ClTv8aiTlitvS48YatRiTLvgE2f2uKgmHNPVBIuvJBHZO2u4bZCzoN1fid+pZn2sbVOkt8uftlLGzz5DSZlFIA==",
|
|
||||||
"path": "discord.net.commands/3.5.0",
|
|
||||||
"hashPath": "discord.net.commands.3.5.0.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"Discord.Net.Core/3.5.0": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-rCzzaznMVQ+bLMxOpYwTyqm9V22kMy6BxlQisSxemHZDe2Jedz3Clp/a0dToACLz+Dlp3u+jYUfCBnTz7L6f4g==",
|
|
||||||
"path": "discord.net.core/3.5.0",
|
|
||||||
"hashPath": "discord.net.core.3.5.0.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"Discord.Net.Interactions/3.5.0": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-wE9+V9DJ7r+1s4euOi4sGPIAt4sD7r+Tk5s9mrlbLCHVQTK4KllAvcrL25bPFI38FuFceREEzFoRlTrekSyB2Q==",
|
|
||||||
"path": "discord.net.interactions/3.5.0",
|
|
||||||
"hashPath": "discord.net.interactions.3.5.0.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"Discord.Net.Rest/3.5.0": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-BnTdLFuuQsKvCv08VQrD4X1Hw2Xp+MELIRQiDiKfG01IiQlRTN+1gc3LB1zXgn5xBvC0HXjHxwV22GrMD9uKHQ==",
|
|
||||||
"path": "discord.net.rest/3.5.0",
|
|
||||||
"hashPath": "discord.net.rest.3.5.0.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"Discord.Net.Webhook/3.5.0": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-vCIGZS+m88sQDuFmdbUqg+2RIXS/NJWx8ei3MX+ZEYiAvOkDgQfkIlEnU1NKpds6ivTt5GFlv6UzcWubb5VJ1w==",
|
|
||||||
"path": "discord.net.webhook/3.5.0",
|
|
||||||
"hashPath": "discord.net.webhook.3.5.0.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"Discord.Net.WebSocket/3.5.0": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-LjBOvcP40vJ+dhOtBDi8haEeblPAKpAIqR04NBzTM1/0RVavJZH89ovfSQIk42ygkiOaDV4E2x0Mmh6DRoIYcw==",
|
|
||||||
"path": "discord.net.websocket/3.5.0",
|
|
||||||
"hashPath": "discord.net.websocket.3.5.0.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"Microsoft.Extensions.DependencyInjection.Abstractions/5.0.0": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-ORj7Zh81gC69TyvmcUm9tSzytcy8AVousi+IVRAI8nLieQjOFryRusSFh7+aLk16FN9pQNqJAiMd7BTKINK0kA==",
|
|
||||||
"path": "microsoft.extensions.dependencyinjection.abstractions/5.0.0",
|
|
||||||
"hashPath": "microsoft.extensions.dependencyinjection.abstractions.5.0.0.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"Newtonsoft.Json/13.0.1": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-ppPFpBcvxdsfUonNcvITKqLl3bqxWbDCZIzDWHzjpdAHRFfZe0Dw9HmA0+za13IdyrgJwpkDTDA9fHaxOrt20A==",
|
|
||||||
"path": "newtonsoft.json/13.0.1",
|
|
||||||
"hashPath": "newtonsoft.json.13.0.1.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"System.Collections.Immutable/5.0.0": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-FXkLXiK0sVVewcso0imKQoOxjoPAj42R8HtjjbSjVPAzwDfzoyoznWxgA3c38LDbN9SJux1xXoXYAhz98j7r2g==",
|
|
||||||
"path": "system.collections.immutable/5.0.0",
|
|
||||||
"hashPath": "system.collections.immutable.5.0.0.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"System.Interactive.Async/5.0.0": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-QaqhQVDiULcu4vm6o89+iP329HcK44cETHOYgy/jfEjtzeFy0ZxmuM7nel9ocjnKxEM4yh1mli7hgh8Q9o+/Iw==",
|
|
||||||
"path": "system.interactive.async/5.0.0",
|
|
||||||
"hashPath": "system.interactive.async.5.0.0.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"System.Linq.Async/5.0.0": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-cPtIuuH8TIjVHSi2ewwReWGW1PfChPE0LxPIDlfwVcLuTM9GANFTXiMB7k3aC4sk3f0cQU25LNKzx+jZMxijqw==",
|
|
||||||
"path": "system.linq.async/5.0.0",
|
|
||||||
"hashPath": "system.linq.async.5.0.0.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"System.Reactive/5.0.0": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-erBZjkQHWL9jpasCE/0qKAryzVBJFxGHVBAvgRN1bzM0q2s1S4oYREEEL0Vb+1kA/6BKb5FjUZMp5VXmy+gzkQ==",
|
|
||||||
"path": "system.reactive/5.0.0",
|
|
||||||
"hashPath": "system.reactive.5.0.0.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"System.ValueTuple/4.5.0": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-okurQJO6NRE/apDIP23ajJ0hpiNmJ+f0BwOlB/cSqTLQlw5upkf+5+96+iG2Jw40G1fCVCyPz/FhIABUjMR+RQ==",
|
|
||||||
"path": "system.valuetuple/4.5.0",
|
|
||||||
"hashPath": "system.valuetuple.4.5.0.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"PluginManager/1.0.0": {
|
|
||||||
"type": "project",
|
|
||||||
"serviceable": false,
|
|
||||||
"sha512": ""
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Binary file not shown.
Binary file not shown.
@@ -1,268 +0,0 @@
|
|||||||
{
|
|
||||||
"runtimeTarget": {
|
|
||||||
"name": ".NETCoreApp,Version=v5.0",
|
|
||||||
"signature": ""
|
|
||||||
},
|
|
||||||
"compilationOptions": {},
|
|
||||||
"targets": {
|
|
||||||
".NETCoreApp,Version=v5.0": {
|
|
||||||
"StartupEvents/1.0.0": {
|
|
||||||
"dependencies": {
|
|
||||||
"PluginManager": "1.0.0"
|
|
||||||
},
|
|
||||||
"runtime": {
|
|
||||||
"StartupEvents.dll": {}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Discord.Net/3.5.0": {
|
|
||||||
"dependencies": {
|
|
||||||
"Discord.Net.Commands": "3.5.0",
|
|
||||||
"Discord.Net.Core": "3.5.0",
|
|
||||||
"Discord.Net.Interactions": "3.5.0",
|
|
||||||
"Discord.Net.Rest": "3.5.0",
|
|
||||||
"Discord.Net.WebSocket": "3.5.0",
|
|
||||||
"Discord.Net.Webhook": "3.5.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Discord.Net.Commands/3.5.0": {
|
|
||||||
"dependencies": {
|
|
||||||
"Discord.Net.Core": "3.5.0"
|
|
||||||
},
|
|
||||||
"runtime": {
|
|
||||||
"lib/net5.0/Discord.Net.Commands.dll": {
|
|
||||||
"assemblyVersion": "3.5.0.0",
|
|
||||||
"fileVersion": "3.5.0.0"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Discord.Net.Core/3.5.0": {
|
|
||||||
"dependencies": {
|
|
||||||
"Newtonsoft.Json": "13.0.1",
|
|
||||||
"System.Collections.Immutable": "5.0.0",
|
|
||||||
"System.Interactive.Async": "5.0.0",
|
|
||||||
"System.ValueTuple": "4.5.0"
|
|
||||||
},
|
|
||||||
"runtime": {
|
|
||||||
"lib/net5.0/Discord.Net.Core.dll": {
|
|
||||||
"assemblyVersion": "3.5.0.0",
|
|
||||||
"fileVersion": "3.5.0.0"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Discord.Net.Interactions/3.5.0": {
|
|
||||||
"dependencies": {
|
|
||||||
"Discord.Net.Core": "3.5.0",
|
|
||||||
"Discord.Net.Rest": "3.5.0",
|
|
||||||
"Discord.Net.WebSocket": "3.5.0",
|
|
||||||
"Microsoft.Extensions.DependencyInjection.Abstractions": "5.0.0",
|
|
||||||
"System.Collections.Immutable": "5.0.0",
|
|
||||||
"System.Reactive": "5.0.0"
|
|
||||||
},
|
|
||||||
"runtime": {
|
|
||||||
"lib/net5.0/Discord.Net.Interactions.dll": {
|
|
||||||
"assemblyVersion": "3.5.0.0",
|
|
||||||
"fileVersion": "3.5.0.0"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Discord.Net.Rest/3.5.0": {
|
|
||||||
"dependencies": {
|
|
||||||
"Discord.Net.Core": "3.5.0"
|
|
||||||
},
|
|
||||||
"runtime": {
|
|
||||||
"lib/net5.0/Discord.Net.Rest.dll": {
|
|
||||||
"assemblyVersion": "3.5.0.0",
|
|
||||||
"fileVersion": "3.5.0.0"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Discord.Net.Webhook/3.5.0": {
|
|
||||||
"dependencies": {
|
|
||||||
"Discord.Net.Core": "3.5.0",
|
|
||||||
"Discord.Net.Rest": "3.5.0"
|
|
||||||
},
|
|
||||||
"runtime": {
|
|
||||||
"lib/net5.0/Discord.Net.Webhook.dll": {
|
|
||||||
"assemblyVersion": "3.5.0.0",
|
|
||||||
"fileVersion": "3.5.0.0"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Discord.Net.WebSocket/3.5.0": {
|
|
||||||
"dependencies": {
|
|
||||||
"Discord.Net.Core": "3.5.0",
|
|
||||||
"Discord.Net.Rest": "3.5.0"
|
|
||||||
},
|
|
||||||
"runtime": {
|
|
||||||
"lib/net5.0/Discord.Net.WebSocket.dll": {
|
|
||||||
"assemblyVersion": "3.5.0.0",
|
|
||||||
"fileVersion": "3.5.0.0"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Microsoft.Extensions.DependencyInjection.Abstractions/5.0.0": {
|
|
||||||
"runtime": {
|
|
||||||
"lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": {
|
|
||||||
"assemblyVersion": "5.0.0.0",
|
|
||||||
"fileVersion": "5.0.20.51904"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Newtonsoft.Json/13.0.1": {
|
|
||||||
"runtime": {
|
|
||||||
"lib/netstandard2.0/Newtonsoft.Json.dll": {
|
|
||||||
"assemblyVersion": "13.0.0.0",
|
|
||||||
"fileVersion": "13.0.1.25517"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"System.Collections.Immutable/5.0.0": {},
|
|
||||||
"System.Interactive.Async/5.0.0": {
|
|
||||||
"dependencies": {
|
|
||||||
"System.Linq.Async": "5.0.0"
|
|
||||||
},
|
|
||||||
"runtime": {
|
|
||||||
"lib/netcoreapp3.1/System.Interactive.Async.dll": {
|
|
||||||
"assemblyVersion": "5.0.0.0",
|
|
||||||
"fileVersion": "5.0.0.1"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"System.Linq.Async/5.0.0": {
|
|
||||||
"runtime": {
|
|
||||||
"lib/netcoreapp3.1/System.Linq.Async.dll": {
|
|
||||||
"assemblyVersion": "5.0.0.0",
|
|
||||||
"fileVersion": "5.0.0.1"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"System.Reactive/5.0.0": {
|
|
||||||
"runtime": {
|
|
||||||
"lib/net5.0/System.Reactive.dll": {
|
|
||||||
"assemblyVersion": "5.0.0.0",
|
|
||||||
"fileVersion": "5.0.0.1"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"System.ValueTuple/4.5.0": {},
|
|
||||||
"PluginManager/1.0.0": {
|
|
||||||
"dependencies": {
|
|
||||||
"Discord.Net": "3.5.0"
|
|
||||||
},
|
|
||||||
"runtime": {
|
|
||||||
"PluginManager.dll": {}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"libraries": {
|
|
||||||
"StartupEvents/1.0.0": {
|
|
||||||
"type": "project",
|
|
||||||
"serviceable": false,
|
|
||||||
"sha512": ""
|
|
||||||
},
|
|
||||||
"Discord.Net/3.5.0": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-IUtexpvogudb1rllKBWkIEpBVQoToMjtVo81KPkt+gNMe7KtRDcZJgcn6+72viMtyw0e95OJPXFV5VEA/n2OQQ==",
|
|
||||||
"path": "discord.net/3.5.0",
|
|
||||||
"hashPath": "discord.net.3.5.0.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"Discord.Net.Commands/3.5.0": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-ClTv8aiTlitvS48YatRiTLvgE2f2uKgmHNPVBIuvJBHZO2u4bZCzoN1fid+pZn2sbVOkt8uftlLGzz5DSZlFIA==",
|
|
||||||
"path": "discord.net.commands/3.5.0",
|
|
||||||
"hashPath": "discord.net.commands.3.5.0.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"Discord.Net.Core/3.5.0": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-rCzzaznMVQ+bLMxOpYwTyqm9V22kMy6BxlQisSxemHZDe2Jedz3Clp/a0dToACLz+Dlp3u+jYUfCBnTz7L6f4g==",
|
|
||||||
"path": "discord.net.core/3.5.0",
|
|
||||||
"hashPath": "discord.net.core.3.5.0.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"Discord.Net.Interactions/3.5.0": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-wE9+V9DJ7r+1s4euOi4sGPIAt4sD7r+Tk5s9mrlbLCHVQTK4KllAvcrL25bPFI38FuFceREEzFoRlTrekSyB2Q==",
|
|
||||||
"path": "discord.net.interactions/3.5.0",
|
|
||||||
"hashPath": "discord.net.interactions.3.5.0.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"Discord.Net.Rest/3.5.0": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-BnTdLFuuQsKvCv08VQrD4X1Hw2Xp+MELIRQiDiKfG01IiQlRTN+1gc3LB1zXgn5xBvC0HXjHxwV22GrMD9uKHQ==",
|
|
||||||
"path": "discord.net.rest/3.5.0",
|
|
||||||
"hashPath": "discord.net.rest.3.5.0.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"Discord.Net.Webhook/3.5.0": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-vCIGZS+m88sQDuFmdbUqg+2RIXS/NJWx8ei3MX+ZEYiAvOkDgQfkIlEnU1NKpds6ivTt5GFlv6UzcWubb5VJ1w==",
|
|
||||||
"path": "discord.net.webhook/3.5.0",
|
|
||||||
"hashPath": "discord.net.webhook.3.5.0.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"Discord.Net.WebSocket/3.5.0": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-LjBOvcP40vJ+dhOtBDi8haEeblPAKpAIqR04NBzTM1/0RVavJZH89ovfSQIk42ygkiOaDV4E2x0Mmh6DRoIYcw==",
|
|
||||||
"path": "discord.net.websocket/3.5.0",
|
|
||||||
"hashPath": "discord.net.websocket.3.5.0.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"Microsoft.Extensions.DependencyInjection.Abstractions/5.0.0": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-ORj7Zh81gC69TyvmcUm9tSzytcy8AVousi+IVRAI8nLieQjOFryRusSFh7+aLk16FN9pQNqJAiMd7BTKINK0kA==",
|
|
||||||
"path": "microsoft.extensions.dependencyinjection.abstractions/5.0.0",
|
|
||||||
"hashPath": "microsoft.extensions.dependencyinjection.abstractions.5.0.0.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"Newtonsoft.Json/13.0.1": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-ppPFpBcvxdsfUonNcvITKqLl3bqxWbDCZIzDWHzjpdAHRFfZe0Dw9HmA0+za13IdyrgJwpkDTDA9fHaxOrt20A==",
|
|
||||||
"path": "newtonsoft.json/13.0.1",
|
|
||||||
"hashPath": "newtonsoft.json.13.0.1.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"System.Collections.Immutable/5.0.0": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-FXkLXiK0sVVewcso0imKQoOxjoPAj42R8HtjjbSjVPAzwDfzoyoznWxgA3c38LDbN9SJux1xXoXYAhz98j7r2g==",
|
|
||||||
"path": "system.collections.immutable/5.0.0",
|
|
||||||
"hashPath": "system.collections.immutable.5.0.0.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"System.Interactive.Async/5.0.0": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-QaqhQVDiULcu4vm6o89+iP329HcK44cETHOYgy/jfEjtzeFy0ZxmuM7nel9ocjnKxEM4yh1mli7hgh8Q9o+/Iw==",
|
|
||||||
"path": "system.interactive.async/5.0.0",
|
|
||||||
"hashPath": "system.interactive.async.5.0.0.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"System.Linq.Async/5.0.0": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-cPtIuuH8TIjVHSi2ewwReWGW1PfChPE0LxPIDlfwVcLuTM9GANFTXiMB7k3aC4sk3f0cQU25LNKzx+jZMxijqw==",
|
|
||||||
"path": "system.linq.async/5.0.0",
|
|
||||||
"hashPath": "system.linq.async.5.0.0.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"System.Reactive/5.0.0": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-erBZjkQHWL9jpasCE/0qKAryzVBJFxGHVBAvgRN1bzM0q2s1S4oYREEEL0Vb+1kA/6BKb5FjUZMp5VXmy+gzkQ==",
|
|
||||||
"path": "system.reactive/5.0.0",
|
|
||||||
"hashPath": "system.reactive.5.0.0.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"System.ValueTuple/4.5.0": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-okurQJO6NRE/apDIP23ajJ0hpiNmJ+f0BwOlB/cSqTLQlw5upkf+5+96+iG2Jw40G1fCVCyPz/FhIABUjMR+RQ==",
|
|
||||||
"path": "system.valuetuple/4.5.0",
|
|
||||||
"hashPath": "system.valuetuple.4.5.0.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"PluginManager/1.0.0": {
|
|
||||||
"type": "project",
|
|
||||||
"serviceable": false,
|
|
||||||
"sha512": ""
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1,268 +0,0 @@
|
|||||||
{
|
|
||||||
"runtimeTarget": {
|
|
||||||
"name": ".NETCoreApp,Version=v6.0",
|
|
||||||
"signature": ""
|
|
||||||
},
|
|
||||||
"compilationOptions": {},
|
|
||||||
"targets": {
|
|
||||||
".NETCoreApp,Version=v6.0": {
|
|
||||||
"CMD_LevelingSystem/1.0.0": {
|
|
||||||
"dependencies": {
|
|
||||||
"PluginManager": "1.0.0"
|
|
||||||
},
|
|
||||||
"runtime": {
|
|
||||||
"CMD_LevelingSystem.dll": {}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Discord.Net/3.6.1": {
|
|
||||||
"dependencies": {
|
|
||||||
"Discord.Net.Commands": "3.6.1",
|
|
||||||
"Discord.Net.Core": "3.6.1",
|
|
||||||
"Discord.Net.Interactions": "3.6.1",
|
|
||||||
"Discord.Net.Rest": "3.6.1",
|
|
||||||
"Discord.Net.WebSocket": "3.6.1",
|
|
||||||
"Discord.Net.Webhook": "3.6.1"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Discord.Net.Commands/3.6.1": {
|
|
||||||
"dependencies": {
|
|
||||||
"Discord.Net.Core": "3.6.1"
|
|
||||||
},
|
|
||||||
"runtime": {
|
|
||||||
"lib/net6.0/Discord.Net.Commands.dll": {
|
|
||||||
"assemblyVersion": "3.6.1.0",
|
|
||||||
"fileVersion": "3.6.1.0"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Discord.Net.Core/3.6.1": {
|
|
||||||
"dependencies": {
|
|
||||||
"Newtonsoft.Json": "13.0.1",
|
|
||||||
"System.Collections.Immutable": "5.0.0",
|
|
||||||
"System.Interactive.Async": "5.0.0",
|
|
||||||
"System.ValueTuple": "4.5.0"
|
|
||||||
},
|
|
||||||
"runtime": {
|
|
||||||
"lib/net6.0/Discord.Net.Core.dll": {
|
|
||||||
"assemblyVersion": "3.6.1.0",
|
|
||||||
"fileVersion": "3.6.1.0"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Discord.Net.Interactions/3.6.1": {
|
|
||||||
"dependencies": {
|
|
||||||
"Discord.Net.Core": "3.6.1",
|
|
||||||
"Discord.Net.Rest": "3.6.1",
|
|
||||||
"Discord.Net.WebSocket": "3.6.1",
|
|
||||||
"Microsoft.Extensions.DependencyInjection.Abstractions": "5.0.0",
|
|
||||||
"System.Collections.Immutable": "5.0.0",
|
|
||||||
"System.Reactive": "5.0.0"
|
|
||||||
},
|
|
||||||
"runtime": {
|
|
||||||
"lib/net6.0/Discord.Net.Interactions.dll": {
|
|
||||||
"assemblyVersion": "3.6.1.0",
|
|
||||||
"fileVersion": "3.6.1.0"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Discord.Net.Rest/3.6.1": {
|
|
||||||
"dependencies": {
|
|
||||||
"Discord.Net.Core": "3.6.1"
|
|
||||||
},
|
|
||||||
"runtime": {
|
|
||||||
"lib/net6.0/Discord.Net.Rest.dll": {
|
|
||||||
"assemblyVersion": "3.6.1.0",
|
|
||||||
"fileVersion": "3.6.1.0"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Discord.Net.Webhook/3.6.1": {
|
|
||||||
"dependencies": {
|
|
||||||
"Discord.Net.Core": "3.6.1",
|
|
||||||
"Discord.Net.Rest": "3.6.1"
|
|
||||||
},
|
|
||||||
"runtime": {
|
|
||||||
"lib/net6.0/Discord.Net.Webhook.dll": {
|
|
||||||
"assemblyVersion": "3.6.1.0",
|
|
||||||
"fileVersion": "3.6.1.0"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Discord.Net.WebSocket/3.6.1": {
|
|
||||||
"dependencies": {
|
|
||||||
"Discord.Net.Core": "3.6.1",
|
|
||||||
"Discord.Net.Rest": "3.6.1"
|
|
||||||
},
|
|
||||||
"runtime": {
|
|
||||||
"lib/net6.0/Discord.Net.WebSocket.dll": {
|
|
||||||
"assemblyVersion": "3.6.1.0",
|
|
||||||
"fileVersion": "3.6.1.0"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Microsoft.Extensions.DependencyInjection.Abstractions/5.0.0": {
|
|
||||||
"runtime": {
|
|
||||||
"lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": {
|
|
||||||
"assemblyVersion": "5.0.0.0",
|
|
||||||
"fileVersion": "5.0.20.51904"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Newtonsoft.Json/13.0.1": {
|
|
||||||
"runtime": {
|
|
||||||
"lib/netstandard2.0/Newtonsoft.Json.dll": {
|
|
||||||
"assemblyVersion": "13.0.0.0",
|
|
||||||
"fileVersion": "13.0.1.25517"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"System.Collections.Immutable/5.0.0": {},
|
|
||||||
"System.Interactive.Async/5.0.0": {
|
|
||||||
"dependencies": {
|
|
||||||
"System.Linq.Async": "5.0.0"
|
|
||||||
},
|
|
||||||
"runtime": {
|
|
||||||
"lib/netcoreapp3.1/System.Interactive.Async.dll": {
|
|
||||||
"assemblyVersion": "5.0.0.0",
|
|
||||||
"fileVersion": "5.0.0.1"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"System.Linq.Async/5.0.0": {
|
|
||||||
"runtime": {
|
|
||||||
"lib/netcoreapp3.1/System.Linq.Async.dll": {
|
|
||||||
"assemblyVersion": "5.0.0.0",
|
|
||||||
"fileVersion": "5.0.0.1"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"System.Reactive/5.0.0": {
|
|
||||||
"runtime": {
|
|
||||||
"lib/net5.0/System.Reactive.dll": {
|
|
||||||
"assemblyVersion": "5.0.0.0",
|
|
||||||
"fileVersion": "5.0.0.1"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"System.ValueTuple/4.5.0": {},
|
|
||||||
"PluginManager/1.0.0": {
|
|
||||||
"dependencies": {
|
|
||||||
"Discord.Net": "3.6.1"
|
|
||||||
},
|
|
||||||
"runtime": {
|
|
||||||
"PluginManager.dll": {}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"libraries": {
|
|
||||||
"CMD_LevelingSystem/1.0.0": {
|
|
||||||
"type": "project",
|
|
||||||
"serviceable": false,
|
|
||||||
"sha512": ""
|
|
||||||
},
|
|
||||||
"Discord.Net/3.6.1": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-TfcL/HG57fVt//WVJ2XyF2PlytY9IYkkwwkPLIhvu5FW4wf9rm7+N8RPh4qtELLfsa5ES0FK2RbgYjABRR9AjA==",
|
|
||||||
"path": "discord.net/3.6.1",
|
|
||||||
"hashPath": "discord.net.3.6.1.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"Discord.Net.Commands/3.6.1": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-kK7m571yzSzPd93o+n8Z+TfvX62BT1HtOEZIWXKwXWO8itP/sgqBNExjWK/6DOpkbD6+khc2f3rp+TA0rJD88g==",
|
|
||||||
"path": "discord.net.commands/3.6.1",
|
|
||||||
"hashPath": "discord.net.commands.3.6.1.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"Discord.Net.Core/3.6.1": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-ibVjQiWzgqh0GyP/GXE2kv3TA/9ysmmNFG/WmRE7GepQQAXXGxVUO9IMJ8h14EvIXMQ0m0DktMe5DkUnilo3Ag==",
|
|
||||||
"path": "discord.net.core/3.6.1",
|
|
||||||
"hashPath": "discord.net.core.3.6.1.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"Discord.Net.Interactions/3.6.1": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-WGOxz6SMUu4WS5b/JdrhlwQletcplBIYqvjFBBDfnqE+uNJqcNGtAdyjLqIILfXGx8aSSSSYZSCeAUa7FZ8Yew==",
|
|
||||||
"path": "discord.net.interactions/3.6.1",
|
|
||||||
"hashPath": "discord.net.interactions.3.6.1.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"Discord.Net.Rest/3.6.1": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-T7RRThIS23roFEJwTL1l7aawjVyn7ZB5yH3tMge0d6TiCzzp4V4FAZ+ArTt19LHRFhPly90v8V3sWqmTMN+5Zg==",
|
|
||||||
"path": "discord.net.rest/3.6.1",
|
|
||||||
"hashPath": "discord.net.rest.3.6.1.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"Discord.Net.Webhook/3.6.1": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-xikKHIGAIMz0BzHkaTKb48DNpFjKW8mvJjLJSezJ1xQOu+laHNk/hav4qxVtyZz7HSI/vGTkmlq9hKVhWzpaUA==",
|
|
||||||
"path": "discord.net.webhook/3.6.1",
|
|
||||||
"hashPath": "discord.net.webhook.3.6.1.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"Discord.Net.WebSocket/3.6.1": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-hF22Xy7URlVEDQZ69INOgzPvFUsIDfd+r6U+1yF9HWdBn3d4THnvAAhkv1TraSx/T/MKS7g+jvk/HZ3mh5S3aw==",
|
|
||||||
"path": "discord.net.websocket/3.6.1",
|
|
||||||
"hashPath": "discord.net.websocket.3.6.1.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"Microsoft.Extensions.DependencyInjection.Abstractions/5.0.0": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-ORj7Zh81gC69TyvmcUm9tSzytcy8AVousi+IVRAI8nLieQjOFryRusSFh7+aLk16FN9pQNqJAiMd7BTKINK0kA==",
|
|
||||||
"path": "microsoft.extensions.dependencyinjection.abstractions/5.0.0",
|
|
||||||
"hashPath": "microsoft.extensions.dependencyinjection.abstractions.5.0.0.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"Newtonsoft.Json/13.0.1": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-ppPFpBcvxdsfUonNcvITKqLl3bqxWbDCZIzDWHzjpdAHRFfZe0Dw9HmA0+za13IdyrgJwpkDTDA9fHaxOrt20A==",
|
|
||||||
"path": "newtonsoft.json/13.0.1",
|
|
||||||
"hashPath": "newtonsoft.json.13.0.1.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"System.Collections.Immutable/5.0.0": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-FXkLXiK0sVVewcso0imKQoOxjoPAj42R8HtjjbSjVPAzwDfzoyoznWxgA3c38LDbN9SJux1xXoXYAhz98j7r2g==",
|
|
||||||
"path": "system.collections.immutable/5.0.0",
|
|
||||||
"hashPath": "system.collections.immutable.5.0.0.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"System.Interactive.Async/5.0.0": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-QaqhQVDiULcu4vm6o89+iP329HcK44cETHOYgy/jfEjtzeFy0ZxmuM7nel9ocjnKxEM4yh1mli7hgh8Q9o+/Iw==",
|
|
||||||
"path": "system.interactive.async/5.0.0",
|
|
||||||
"hashPath": "system.interactive.async.5.0.0.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"System.Linq.Async/5.0.0": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-cPtIuuH8TIjVHSi2ewwReWGW1PfChPE0LxPIDlfwVcLuTM9GANFTXiMB7k3aC4sk3f0cQU25LNKzx+jZMxijqw==",
|
|
||||||
"path": "system.linq.async/5.0.0",
|
|
||||||
"hashPath": "system.linq.async.5.0.0.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"System.Reactive/5.0.0": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-erBZjkQHWL9jpasCE/0qKAryzVBJFxGHVBAvgRN1bzM0q2s1S4oYREEEL0Vb+1kA/6BKb5FjUZMp5VXmy+gzkQ==",
|
|
||||||
"path": "system.reactive/5.0.0",
|
|
||||||
"hashPath": "system.reactive.5.0.0.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"System.ValueTuple/4.5.0": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-okurQJO6NRE/apDIP23ajJ0hpiNmJ+f0BwOlB/cSqTLQlw5upkf+5+96+iG2Jw40G1fCVCyPz/FhIABUjMR+RQ==",
|
|
||||||
"path": "system.valuetuple/4.5.0",
|
|
||||||
"hashPath": "system.valuetuple.4.5.0.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"PluginManager/1.0.0": {
|
|
||||||
"type": "project",
|
|
||||||
"serviceable": false,
|
|
||||||
"sha512": ""
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Binary file not shown.
@@ -1,268 +0,0 @@
|
|||||||
{
|
|
||||||
"runtimeTarget": {
|
|
||||||
"name": ".NETCoreApp,Version=v6.0",
|
|
||||||
"signature": ""
|
|
||||||
},
|
|
||||||
"compilationOptions": {},
|
|
||||||
"targets": {
|
|
||||||
".NETCoreApp,Version=v6.0": {
|
|
||||||
"CMD_Utils/1.0.0": {
|
|
||||||
"dependencies": {
|
|
||||||
"PluginManager": "1.0.0"
|
|
||||||
},
|
|
||||||
"runtime": {
|
|
||||||
"CMD_Utils.dll": {}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Discord.Net/3.6.1": {
|
|
||||||
"dependencies": {
|
|
||||||
"Discord.Net.Commands": "3.6.1",
|
|
||||||
"Discord.Net.Core": "3.6.1",
|
|
||||||
"Discord.Net.Interactions": "3.6.1",
|
|
||||||
"Discord.Net.Rest": "3.6.1",
|
|
||||||
"Discord.Net.WebSocket": "3.6.1",
|
|
||||||
"Discord.Net.Webhook": "3.6.1"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Discord.Net.Commands/3.6.1": {
|
|
||||||
"dependencies": {
|
|
||||||
"Discord.Net.Core": "3.6.1"
|
|
||||||
},
|
|
||||||
"runtime": {
|
|
||||||
"lib/net6.0/Discord.Net.Commands.dll": {
|
|
||||||
"assemblyVersion": "3.6.1.0",
|
|
||||||
"fileVersion": "3.6.1.0"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Discord.Net.Core/3.6.1": {
|
|
||||||
"dependencies": {
|
|
||||||
"Newtonsoft.Json": "13.0.1",
|
|
||||||
"System.Collections.Immutable": "5.0.0",
|
|
||||||
"System.Interactive.Async": "5.0.0",
|
|
||||||
"System.ValueTuple": "4.5.0"
|
|
||||||
},
|
|
||||||
"runtime": {
|
|
||||||
"lib/net6.0/Discord.Net.Core.dll": {
|
|
||||||
"assemblyVersion": "3.6.1.0",
|
|
||||||
"fileVersion": "3.6.1.0"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Discord.Net.Interactions/3.6.1": {
|
|
||||||
"dependencies": {
|
|
||||||
"Discord.Net.Core": "3.6.1",
|
|
||||||
"Discord.Net.Rest": "3.6.1",
|
|
||||||
"Discord.Net.WebSocket": "3.6.1",
|
|
||||||
"Microsoft.Extensions.DependencyInjection.Abstractions": "5.0.0",
|
|
||||||
"System.Collections.Immutable": "5.0.0",
|
|
||||||
"System.Reactive": "5.0.0"
|
|
||||||
},
|
|
||||||
"runtime": {
|
|
||||||
"lib/net6.0/Discord.Net.Interactions.dll": {
|
|
||||||
"assemblyVersion": "3.6.1.0",
|
|
||||||
"fileVersion": "3.6.1.0"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Discord.Net.Rest/3.6.1": {
|
|
||||||
"dependencies": {
|
|
||||||
"Discord.Net.Core": "3.6.1"
|
|
||||||
},
|
|
||||||
"runtime": {
|
|
||||||
"lib/net6.0/Discord.Net.Rest.dll": {
|
|
||||||
"assemblyVersion": "3.6.1.0",
|
|
||||||
"fileVersion": "3.6.1.0"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Discord.Net.Webhook/3.6.1": {
|
|
||||||
"dependencies": {
|
|
||||||
"Discord.Net.Core": "3.6.1",
|
|
||||||
"Discord.Net.Rest": "3.6.1"
|
|
||||||
},
|
|
||||||
"runtime": {
|
|
||||||
"lib/net6.0/Discord.Net.Webhook.dll": {
|
|
||||||
"assemblyVersion": "3.6.1.0",
|
|
||||||
"fileVersion": "3.6.1.0"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Discord.Net.WebSocket/3.6.1": {
|
|
||||||
"dependencies": {
|
|
||||||
"Discord.Net.Core": "3.6.1",
|
|
||||||
"Discord.Net.Rest": "3.6.1"
|
|
||||||
},
|
|
||||||
"runtime": {
|
|
||||||
"lib/net6.0/Discord.Net.WebSocket.dll": {
|
|
||||||
"assemblyVersion": "3.6.1.0",
|
|
||||||
"fileVersion": "3.6.1.0"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Microsoft.Extensions.DependencyInjection.Abstractions/5.0.0": {
|
|
||||||
"runtime": {
|
|
||||||
"lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": {
|
|
||||||
"assemblyVersion": "5.0.0.0",
|
|
||||||
"fileVersion": "5.0.20.51904"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Newtonsoft.Json/13.0.1": {
|
|
||||||
"runtime": {
|
|
||||||
"lib/netstandard2.0/Newtonsoft.Json.dll": {
|
|
||||||
"assemblyVersion": "13.0.0.0",
|
|
||||||
"fileVersion": "13.0.1.25517"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"System.Collections.Immutable/5.0.0": {},
|
|
||||||
"System.Interactive.Async/5.0.0": {
|
|
||||||
"dependencies": {
|
|
||||||
"System.Linq.Async": "5.0.0"
|
|
||||||
},
|
|
||||||
"runtime": {
|
|
||||||
"lib/netcoreapp3.1/System.Interactive.Async.dll": {
|
|
||||||
"assemblyVersion": "5.0.0.0",
|
|
||||||
"fileVersion": "5.0.0.1"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"System.Linq.Async/5.0.0": {
|
|
||||||
"runtime": {
|
|
||||||
"lib/netcoreapp3.1/System.Linq.Async.dll": {
|
|
||||||
"assemblyVersion": "5.0.0.0",
|
|
||||||
"fileVersion": "5.0.0.1"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"System.Reactive/5.0.0": {
|
|
||||||
"runtime": {
|
|
||||||
"lib/net5.0/System.Reactive.dll": {
|
|
||||||
"assemblyVersion": "5.0.0.0",
|
|
||||||
"fileVersion": "5.0.0.1"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"System.ValueTuple/4.5.0": {},
|
|
||||||
"PluginManager/1.0.0": {
|
|
||||||
"dependencies": {
|
|
||||||
"Discord.Net": "3.6.1"
|
|
||||||
},
|
|
||||||
"runtime": {
|
|
||||||
"PluginManager.dll": {}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"libraries": {
|
|
||||||
"CMD_Utils/1.0.0": {
|
|
||||||
"type": "project",
|
|
||||||
"serviceable": false,
|
|
||||||
"sha512": ""
|
|
||||||
},
|
|
||||||
"Discord.Net/3.6.1": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-TfcL/HG57fVt//WVJ2XyF2PlytY9IYkkwwkPLIhvu5FW4wf9rm7+N8RPh4qtELLfsa5ES0FK2RbgYjABRR9AjA==",
|
|
||||||
"path": "discord.net/3.6.1",
|
|
||||||
"hashPath": "discord.net.3.6.1.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"Discord.Net.Commands/3.6.1": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-kK7m571yzSzPd93o+n8Z+TfvX62BT1HtOEZIWXKwXWO8itP/sgqBNExjWK/6DOpkbD6+khc2f3rp+TA0rJD88g==",
|
|
||||||
"path": "discord.net.commands/3.6.1",
|
|
||||||
"hashPath": "discord.net.commands.3.6.1.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"Discord.Net.Core/3.6.1": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-ibVjQiWzgqh0GyP/GXE2kv3TA/9ysmmNFG/WmRE7GepQQAXXGxVUO9IMJ8h14EvIXMQ0m0DktMe5DkUnilo3Ag==",
|
|
||||||
"path": "discord.net.core/3.6.1",
|
|
||||||
"hashPath": "discord.net.core.3.6.1.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"Discord.Net.Interactions/3.6.1": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-WGOxz6SMUu4WS5b/JdrhlwQletcplBIYqvjFBBDfnqE+uNJqcNGtAdyjLqIILfXGx8aSSSSYZSCeAUa7FZ8Yew==",
|
|
||||||
"path": "discord.net.interactions/3.6.1",
|
|
||||||
"hashPath": "discord.net.interactions.3.6.1.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"Discord.Net.Rest/3.6.1": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-T7RRThIS23roFEJwTL1l7aawjVyn7ZB5yH3tMge0d6TiCzzp4V4FAZ+ArTt19LHRFhPly90v8V3sWqmTMN+5Zg==",
|
|
||||||
"path": "discord.net.rest/3.6.1",
|
|
||||||
"hashPath": "discord.net.rest.3.6.1.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"Discord.Net.Webhook/3.6.1": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-xikKHIGAIMz0BzHkaTKb48DNpFjKW8mvJjLJSezJ1xQOu+laHNk/hav4qxVtyZz7HSI/vGTkmlq9hKVhWzpaUA==",
|
|
||||||
"path": "discord.net.webhook/3.6.1",
|
|
||||||
"hashPath": "discord.net.webhook.3.6.1.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"Discord.Net.WebSocket/3.6.1": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-hF22Xy7URlVEDQZ69INOgzPvFUsIDfd+r6U+1yF9HWdBn3d4THnvAAhkv1TraSx/T/MKS7g+jvk/HZ3mh5S3aw==",
|
|
||||||
"path": "discord.net.websocket/3.6.1",
|
|
||||||
"hashPath": "discord.net.websocket.3.6.1.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"Microsoft.Extensions.DependencyInjection.Abstractions/5.0.0": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-ORj7Zh81gC69TyvmcUm9tSzytcy8AVousi+IVRAI8nLieQjOFryRusSFh7+aLk16FN9pQNqJAiMd7BTKINK0kA==",
|
|
||||||
"path": "microsoft.extensions.dependencyinjection.abstractions/5.0.0",
|
|
||||||
"hashPath": "microsoft.extensions.dependencyinjection.abstractions.5.0.0.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"Newtonsoft.Json/13.0.1": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-ppPFpBcvxdsfUonNcvITKqLl3bqxWbDCZIzDWHzjpdAHRFfZe0Dw9HmA0+za13IdyrgJwpkDTDA9fHaxOrt20A==",
|
|
||||||
"path": "newtonsoft.json/13.0.1",
|
|
||||||
"hashPath": "newtonsoft.json.13.0.1.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"System.Collections.Immutable/5.0.0": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-FXkLXiK0sVVewcso0imKQoOxjoPAj42R8HtjjbSjVPAzwDfzoyoznWxgA3c38LDbN9SJux1xXoXYAhz98j7r2g==",
|
|
||||||
"path": "system.collections.immutable/5.0.0",
|
|
||||||
"hashPath": "system.collections.immutable.5.0.0.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"System.Interactive.Async/5.0.0": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-QaqhQVDiULcu4vm6o89+iP329HcK44cETHOYgy/jfEjtzeFy0ZxmuM7nel9ocjnKxEM4yh1mli7hgh8Q9o+/Iw==",
|
|
||||||
"path": "system.interactive.async/5.0.0",
|
|
||||||
"hashPath": "system.interactive.async.5.0.0.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"System.Linq.Async/5.0.0": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-cPtIuuH8TIjVHSi2ewwReWGW1PfChPE0LxPIDlfwVcLuTM9GANFTXiMB7k3aC4sk3f0cQU25LNKzx+jZMxijqw==",
|
|
||||||
"path": "system.linq.async/5.0.0",
|
|
||||||
"hashPath": "system.linq.async.5.0.0.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"System.Reactive/5.0.0": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-erBZjkQHWL9jpasCE/0qKAryzVBJFxGHVBAvgRN1bzM0q2s1S4oYREEEL0Vb+1kA/6BKb5FjUZMp5VXmy+gzkQ==",
|
|
||||||
"path": "system.reactive/5.0.0",
|
|
||||||
"hashPath": "system.reactive.5.0.0.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"System.ValueTuple/4.5.0": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-okurQJO6NRE/apDIP23ajJ0hpiNmJ+f0BwOlB/cSqTLQlw5upkf+5+96+iG2Jw40G1fCVCyPz/FhIABUjMR+RQ==",
|
|
||||||
"path": "system.valuetuple/4.5.0",
|
|
||||||
"hashPath": "system.valuetuple.4.5.0.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"PluginManager/1.0.0": {
|
|
||||||
"type": "project",
|
|
||||||
"serviceable": false,
|
|
||||||
"sha512": ""
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Binary file not shown.
@@ -1,268 +0,0 @@
|
|||||||
{
|
|
||||||
"runtimeTarget": {
|
|
||||||
"name": ".NETCoreApp,Version=v6.0",
|
|
||||||
"signature": ""
|
|
||||||
},
|
|
||||||
"compilationOptions": {},
|
|
||||||
"targets": {
|
|
||||||
".NETCoreApp,Version=v6.0": {
|
|
||||||
"EVE_LevelingSystem/1.0.0": {
|
|
||||||
"dependencies": {
|
|
||||||
"PluginManager": "1.0.0"
|
|
||||||
},
|
|
||||||
"runtime": {
|
|
||||||
"EVE_LevelingSystem.dll": {}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Discord.Net/3.6.1": {
|
|
||||||
"dependencies": {
|
|
||||||
"Discord.Net.Commands": "3.6.1",
|
|
||||||
"Discord.Net.Core": "3.6.1",
|
|
||||||
"Discord.Net.Interactions": "3.6.1",
|
|
||||||
"Discord.Net.Rest": "3.6.1",
|
|
||||||
"Discord.Net.WebSocket": "3.6.1",
|
|
||||||
"Discord.Net.Webhook": "3.6.1"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Discord.Net.Commands/3.6.1": {
|
|
||||||
"dependencies": {
|
|
||||||
"Discord.Net.Core": "3.6.1"
|
|
||||||
},
|
|
||||||
"runtime": {
|
|
||||||
"lib/net6.0/Discord.Net.Commands.dll": {
|
|
||||||
"assemblyVersion": "3.6.1.0",
|
|
||||||
"fileVersion": "3.6.1.0"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Discord.Net.Core/3.6.1": {
|
|
||||||
"dependencies": {
|
|
||||||
"Newtonsoft.Json": "13.0.1",
|
|
||||||
"System.Collections.Immutable": "5.0.0",
|
|
||||||
"System.Interactive.Async": "5.0.0",
|
|
||||||
"System.ValueTuple": "4.5.0"
|
|
||||||
},
|
|
||||||
"runtime": {
|
|
||||||
"lib/net6.0/Discord.Net.Core.dll": {
|
|
||||||
"assemblyVersion": "3.6.1.0",
|
|
||||||
"fileVersion": "3.6.1.0"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Discord.Net.Interactions/3.6.1": {
|
|
||||||
"dependencies": {
|
|
||||||
"Discord.Net.Core": "3.6.1",
|
|
||||||
"Discord.Net.Rest": "3.6.1",
|
|
||||||
"Discord.Net.WebSocket": "3.6.1",
|
|
||||||
"Microsoft.Extensions.DependencyInjection.Abstractions": "5.0.0",
|
|
||||||
"System.Collections.Immutable": "5.0.0",
|
|
||||||
"System.Reactive": "5.0.0"
|
|
||||||
},
|
|
||||||
"runtime": {
|
|
||||||
"lib/net6.0/Discord.Net.Interactions.dll": {
|
|
||||||
"assemblyVersion": "3.6.1.0",
|
|
||||||
"fileVersion": "3.6.1.0"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Discord.Net.Rest/3.6.1": {
|
|
||||||
"dependencies": {
|
|
||||||
"Discord.Net.Core": "3.6.1"
|
|
||||||
},
|
|
||||||
"runtime": {
|
|
||||||
"lib/net6.0/Discord.Net.Rest.dll": {
|
|
||||||
"assemblyVersion": "3.6.1.0",
|
|
||||||
"fileVersion": "3.6.1.0"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Discord.Net.Webhook/3.6.1": {
|
|
||||||
"dependencies": {
|
|
||||||
"Discord.Net.Core": "3.6.1",
|
|
||||||
"Discord.Net.Rest": "3.6.1"
|
|
||||||
},
|
|
||||||
"runtime": {
|
|
||||||
"lib/net6.0/Discord.Net.Webhook.dll": {
|
|
||||||
"assemblyVersion": "3.6.1.0",
|
|
||||||
"fileVersion": "3.6.1.0"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Discord.Net.WebSocket/3.6.1": {
|
|
||||||
"dependencies": {
|
|
||||||
"Discord.Net.Core": "3.6.1",
|
|
||||||
"Discord.Net.Rest": "3.6.1"
|
|
||||||
},
|
|
||||||
"runtime": {
|
|
||||||
"lib/net6.0/Discord.Net.WebSocket.dll": {
|
|
||||||
"assemblyVersion": "3.6.1.0",
|
|
||||||
"fileVersion": "3.6.1.0"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Microsoft.Extensions.DependencyInjection.Abstractions/5.0.0": {
|
|
||||||
"runtime": {
|
|
||||||
"lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": {
|
|
||||||
"assemblyVersion": "5.0.0.0",
|
|
||||||
"fileVersion": "5.0.20.51904"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Newtonsoft.Json/13.0.1": {
|
|
||||||
"runtime": {
|
|
||||||
"lib/netstandard2.0/Newtonsoft.Json.dll": {
|
|
||||||
"assemblyVersion": "13.0.0.0",
|
|
||||||
"fileVersion": "13.0.1.25517"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"System.Collections.Immutable/5.0.0": {},
|
|
||||||
"System.Interactive.Async/5.0.0": {
|
|
||||||
"dependencies": {
|
|
||||||
"System.Linq.Async": "5.0.0"
|
|
||||||
},
|
|
||||||
"runtime": {
|
|
||||||
"lib/netcoreapp3.1/System.Interactive.Async.dll": {
|
|
||||||
"assemblyVersion": "5.0.0.0",
|
|
||||||
"fileVersion": "5.0.0.1"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"System.Linq.Async/5.0.0": {
|
|
||||||
"runtime": {
|
|
||||||
"lib/netcoreapp3.1/System.Linq.Async.dll": {
|
|
||||||
"assemblyVersion": "5.0.0.0",
|
|
||||||
"fileVersion": "5.0.0.1"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"System.Reactive/5.0.0": {
|
|
||||||
"runtime": {
|
|
||||||
"lib/net5.0/System.Reactive.dll": {
|
|
||||||
"assemblyVersion": "5.0.0.0",
|
|
||||||
"fileVersion": "5.0.0.1"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"System.ValueTuple/4.5.0": {},
|
|
||||||
"PluginManager/1.0.0": {
|
|
||||||
"dependencies": {
|
|
||||||
"Discord.Net": "3.6.1"
|
|
||||||
},
|
|
||||||
"runtime": {
|
|
||||||
"PluginManager.dll": {}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"libraries": {
|
|
||||||
"EVE_LevelingSystem/1.0.0": {
|
|
||||||
"type": "project",
|
|
||||||
"serviceable": false,
|
|
||||||
"sha512": ""
|
|
||||||
},
|
|
||||||
"Discord.Net/3.6.1": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-TfcL/HG57fVt//WVJ2XyF2PlytY9IYkkwwkPLIhvu5FW4wf9rm7+N8RPh4qtELLfsa5ES0FK2RbgYjABRR9AjA==",
|
|
||||||
"path": "discord.net/3.6.1",
|
|
||||||
"hashPath": "discord.net.3.6.1.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"Discord.Net.Commands/3.6.1": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-kK7m571yzSzPd93o+n8Z+TfvX62BT1HtOEZIWXKwXWO8itP/sgqBNExjWK/6DOpkbD6+khc2f3rp+TA0rJD88g==",
|
|
||||||
"path": "discord.net.commands/3.6.1",
|
|
||||||
"hashPath": "discord.net.commands.3.6.1.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"Discord.Net.Core/3.6.1": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-ibVjQiWzgqh0GyP/GXE2kv3TA/9ysmmNFG/WmRE7GepQQAXXGxVUO9IMJ8h14EvIXMQ0m0DktMe5DkUnilo3Ag==",
|
|
||||||
"path": "discord.net.core/3.6.1",
|
|
||||||
"hashPath": "discord.net.core.3.6.1.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"Discord.Net.Interactions/3.6.1": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-WGOxz6SMUu4WS5b/JdrhlwQletcplBIYqvjFBBDfnqE+uNJqcNGtAdyjLqIILfXGx8aSSSSYZSCeAUa7FZ8Yew==",
|
|
||||||
"path": "discord.net.interactions/3.6.1",
|
|
||||||
"hashPath": "discord.net.interactions.3.6.1.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"Discord.Net.Rest/3.6.1": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-T7RRThIS23roFEJwTL1l7aawjVyn7ZB5yH3tMge0d6TiCzzp4V4FAZ+ArTt19LHRFhPly90v8V3sWqmTMN+5Zg==",
|
|
||||||
"path": "discord.net.rest/3.6.1",
|
|
||||||
"hashPath": "discord.net.rest.3.6.1.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"Discord.Net.Webhook/3.6.1": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-xikKHIGAIMz0BzHkaTKb48DNpFjKW8mvJjLJSezJ1xQOu+laHNk/hav4qxVtyZz7HSI/vGTkmlq9hKVhWzpaUA==",
|
|
||||||
"path": "discord.net.webhook/3.6.1",
|
|
||||||
"hashPath": "discord.net.webhook.3.6.1.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"Discord.Net.WebSocket/3.6.1": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-hF22Xy7URlVEDQZ69INOgzPvFUsIDfd+r6U+1yF9HWdBn3d4THnvAAhkv1TraSx/T/MKS7g+jvk/HZ3mh5S3aw==",
|
|
||||||
"path": "discord.net.websocket/3.6.1",
|
|
||||||
"hashPath": "discord.net.websocket.3.6.1.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"Microsoft.Extensions.DependencyInjection.Abstractions/5.0.0": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-ORj7Zh81gC69TyvmcUm9tSzytcy8AVousi+IVRAI8nLieQjOFryRusSFh7+aLk16FN9pQNqJAiMd7BTKINK0kA==",
|
|
||||||
"path": "microsoft.extensions.dependencyinjection.abstractions/5.0.0",
|
|
||||||
"hashPath": "microsoft.extensions.dependencyinjection.abstractions.5.0.0.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"Newtonsoft.Json/13.0.1": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-ppPFpBcvxdsfUonNcvITKqLl3bqxWbDCZIzDWHzjpdAHRFfZe0Dw9HmA0+za13IdyrgJwpkDTDA9fHaxOrt20A==",
|
|
||||||
"path": "newtonsoft.json/13.0.1",
|
|
||||||
"hashPath": "newtonsoft.json.13.0.1.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"System.Collections.Immutable/5.0.0": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-FXkLXiK0sVVewcso0imKQoOxjoPAj42R8HtjjbSjVPAzwDfzoyoznWxgA3c38LDbN9SJux1xXoXYAhz98j7r2g==",
|
|
||||||
"path": "system.collections.immutable/5.0.0",
|
|
||||||
"hashPath": "system.collections.immutable.5.0.0.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"System.Interactive.Async/5.0.0": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-QaqhQVDiULcu4vm6o89+iP329HcK44cETHOYgy/jfEjtzeFy0ZxmuM7nel9ocjnKxEM4yh1mli7hgh8Q9o+/Iw==",
|
|
||||||
"path": "system.interactive.async/5.0.0",
|
|
||||||
"hashPath": "system.interactive.async.5.0.0.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"System.Linq.Async/5.0.0": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-cPtIuuH8TIjVHSi2ewwReWGW1PfChPE0LxPIDlfwVcLuTM9GANFTXiMB7k3aC4sk3f0cQU25LNKzx+jZMxijqw==",
|
|
||||||
"path": "system.linq.async/5.0.0",
|
|
||||||
"hashPath": "system.linq.async.5.0.0.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"System.Reactive/5.0.0": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-erBZjkQHWL9jpasCE/0qKAryzVBJFxGHVBAvgRN1bzM0q2s1S4oYREEEL0Vb+1kA/6BKb5FjUZMp5VXmy+gzkQ==",
|
|
||||||
"path": "system.reactive/5.0.0",
|
|
||||||
"hashPath": "system.reactive.5.0.0.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"System.ValueTuple/4.5.0": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-okurQJO6NRE/apDIP23ajJ0hpiNmJ+f0BwOlB/cSqTLQlw5upkf+5+96+iG2Jw40G1fCVCyPz/FhIABUjMR+RQ==",
|
|
||||||
"path": "system.valuetuple/4.5.0",
|
|
||||||
"hashPath": "system.valuetuple.4.5.0.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"PluginManager/1.0.0": {
|
|
||||||
"type": "project",
|
|
||||||
"serviceable": false,
|
|
||||||
"sha512": ""
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Binary file not shown.
@@ -1,268 +0,0 @@
|
|||||||
{
|
|
||||||
"runtimeTarget": {
|
|
||||||
"name": ".NETCoreApp,Version=v6.0",
|
|
||||||
"signature": ""
|
|
||||||
},
|
|
||||||
"compilationOptions": {},
|
|
||||||
"targets": {
|
|
||||||
".NETCoreApp,Version=v6.0": {
|
|
||||||
"MusicCommands/1.0.0": {
|
|
||||||
"dependencies": {
|
|
||||||
"PluginManager": "1.0.0"
|
|
||||||
},
|
|
||||||
"runtime": {
|
|
||||||
"MusicCommands.dll": {}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Discord.Net/3.6.1": {
|
|
||||||
"dependencies": {
|
|
||||||
"Discord.Net.Commands": "3.6.1",
|
|
||||||
"Discord.Net.Core": "3.6.1",
|
|
||||||
"Discord.Net.Interactions": "3.6.1",
|
|
||||||
"Discord.Net.Rest": "3.6.1",
|
|
||||||
"Discord.Net.WebSocket": "3.6.1",
|
|
||||||
"Discord.Net.Webhook": "3.6.1"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Discord.Net.Commands/3.6.1": {
|
|
||||||
"dependencies": {
|
|
||||||
"Discord.Net.Core": "3.6.1"
|
|
||||||
},
|
|
||||||
"runtime": {
|
|
||||||
"lib/net6.0/Discord.Net.Commands.dll": {
|
|
||||||
"assemblyVersion": "3.6.1.0",
|
|
||||||
"fileVersion": "3.6.1.0"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Discord.Net.Core/3.6.1": {
|
|
||||||
"dependencies": {
|
|
||||||
"Newtonsoft.Json": "13.0.1",
|
|
||||||
"System.Collections.Immutable": "5.0.0",
|
|
||||||
"System.Interactive.Async": "5.0.0",
|
|
||||||
"System.ValueTuple": "4.5.0"
|
|
||||||
},
|
|
||||||
"runtime": {
|
|
||||||
"lib/net6.0/Discord.Net.Core.dll": {
|
|
||||||
"assemblyVersion": "3.6.1.0",
|
|
||||||
"fileVersion": "3.6.1.0"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Discord.Net.Interactions/3.6.1": {
|
|
||||||
"dependencies": {
|
|
||||||
"Discord.Net.Core": "3.6.1",
|
|
||||||
"Discord.Net.Rest": "3.6.1",
|
|
||||||
"Discord.Net.WebSocket": "3.6.1",
|
|
||||||
"Microsoft.Extensions.DependencyInjection.Abstractions": "5.0.0",
|
|
||||||
"System.Collections.Immutable": "5.0.0",
|
|
||||||
"System.Reactive": "5.0.0"
|
|
||||||
},
|
|
||||||
"runtime": {
|
|
||||||
"lib/net6.0/Discord.Net.Interactions.dll": {
|
|
||||||
"assemblyVersion": "3.6.1.0",
|
|
||||||
"fileVersion": "3.6.1.0"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Discord.Net.Rest/3.6.1": {
|
|
||||||
"dependencies": {
|
|
||||||
"Discord.Net.Core": "3.6.1"
|
|
||||||
},
|
|
||||||
"runtime": {
|
|
||||||
"lib/net6.0/Discord.Net.Rest.dll": {
|
|
||||||
"assemblyVersion": "3.6.1.0",
|
|
||||||
"fileVersion": "3.6.1.0"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Discord.Net.Webhook/3.6.1": {
|
|
||||||
"dependencies": {
|
|
||||||
"Discord.Net.Core": "3.6.1",
|
|
||||||
"Discord.Net.Rest": "3.6.1"
|
|
||||||
},
|
|
||||||
"runtime": {
|
|
||||||
"lib/net6.0/Discord.Net.Webhook.dll": {
|
|
||||||
"assemblyVersion": "3.6.1.0",
|
|
||||||
"fileVersion": "3.6.1.0"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Discord.Net.WebSocket/3.6.1": {
|
|
||||||
"dependencies": {
|
|
||||||
"Discord.Net.Core": "3.6.1",
|
|
||||||
"Discord.Net.Rest": "3.6.1"
|
|
||||||
},
|
|
||||||
"runtime": {
|
|
||||||
"lib/net6.0/Discord.Net.WebSocket.dll": {
|
|
||||||
"assemblyVersion": "3.6.1.0",
|
|
||||||
"fileVersion": "3.6.1.0"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Microsoft.Extensions.DependencyInjection.Abstractions/5.0.0": {
|
|
||||||
"runtime": {
|
|
||||||
"lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": {
|
|
||||||
"assemblyVersion": "5.0.0.0",
|
|
||||||
"fileVersion": "5.0.20.51904"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Newtonsoft.Json/13.0.1": {
|
|
||||||
"runtime": {
|
|
||||||
"lib/netstandard2.0/Newtonsoft.Json.dll": {
|
|
||||||
"assemblyVersion": "13.0.0.0",
|
|
||||||
"fileVersion": "13.0.1.25517"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"System.Collections.Immutable/5.0.0": {},
|
|
||||||
"System.Interactive.Async/5.0.0": {
|
|
||||||
"dependencies": {
|
|
||||||
"System.Linq.Async": "5.0.0"
|
|
||||||
},
|
|
||||||
"runtime": {
|
|
||||||
"lib/netcoreapp3.1/System.Interactive.Async.dll": {
|
|
||||||
"assemblyVersion": "5.0.0.0",
|
|
||||||
"fileVersion": "5.0.0.1"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"System.Linq.Async/5.0.0": {
|
|
||||||
"runtime": {
|
|
||||||
"lib/netcoreapp3.1/System.Linq.Async.dll": {
|
|
||||||
"assemblyVersion": "5.0.0.0",
|
|
||||||
"fileVersion": "5.0.0.1"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"System.Reactive/5.0.0": {
|
|
||||||
"runtime": {
|
|
||||||
"lib/net5.0/System.Reactive.dll": {
|
|
||||||
"assemblyVersion": "5.0.0.0",
|
|
||||||
"fileVersion": "5.0.0.1"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"System.ValueTuple/4.5.0": {},
|
|
||||||
"PluginManager/1.0.0": {
|
|
||||||
"dependencies": {
|
|
||||||
"Discord.Net": "3.6.1"
|
|
||||||
},
|
|
||||||
"runtime": {
|
|
||||||
"PluginManager.dll": {}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"libraries": {
|
|
||||||
"MusicCommands/1.0.0": {
|
|
||||||
"type": "project",
|
|
||||||
"serviceable": false,
|
|
||||||
"sha512": ""
|
|
||||||
},
|
|
||||||
"Discord.Net/3.6.1": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-TfcL/HG57fVt//WVJ2XyF2PlytY9IYkkwwkPLIhvu5FW4wf9rm7+N8RPh4qtELLfsa5ES0FK2RbgYjABRR9AjA==",
|
|
||||||
"path": "discord.net/3.6.1",
|
|
||||||
"hashPath": "discord.net.3.6.1.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"Discord.Net.Commands/3.6.1": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-kK7m571yzSzPd93o+n8Z+TfvX62BT1HtOEZIWXKwXWO8itP/sgqBNExjWK/6DOpkbD6+khc2f3rp+TA0rJD88g==",
|
|
||||||
"path": "discord.net.commands/3.6.1",
|
|
||||||
"hashPath": "discord.net.commands.3.6.1.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"Discord.Net.Core/3.6.1": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-ibVjQiWzgqh0GyP/GXE2kv3TA/9ysmmNFG/WmRE7GepQQAXXGxVUO9IMJ8h14EvIXMQ0m0DktMe5DkUnilo3Ag==",
|
|
||||||
"path": "discord.net.core/3.6.1",
|
|
||||||
"hashPath": "discord.net.core.3.6.1.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"Discord.Net.Interactions/3.6.1": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-WGOxz6SMUu4WS5b/JdrhlwQletcplBIYqvjFBBDfnqE+uNJqcNGtAdyjLqIILfXGx8aSSSSYZSCeAUa7FZ8Yew==",
|
|
||||||
"path": "discord.net.interactions/3.6.1",
|
|
||||||
"hashPath": "discord.net.interactions.3.6.1.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"Discord.Net.Rest/3.6.1": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-T7RRThIS23roFEJwTL1l7aawjVyn7ZB5yH3tMge0d6TiCzzp4V4FAZ+ArTt19LHRFhPly90v8V3sWqmTMN+5Zg==",
|
|
||||||
"path": "discord.net.rest/3.6.1",
|
|
||||||
"hashPath": "discord.net.rest.3.6.1.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"Discord.Net.Webhook/3.6.1": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-xikKHIGAIMz0BzHkaTKb48DNpFjKW8mvJjLJSezJ1xQOu+laHNk/hav4qxVtyZz7HSI/vGTkmlq9hKVhWzpaUA==",
|
|
||||||
"path": "discord.net.webhook/3.6.1",
|
|
||||||
"hashPath": "discord.net.webhook.3.6.1.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"Discord.Net.WebSocket/3.6.1": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-hF22Xy7URlVEDQZ69INOgzPvFUsIDfd+r6U+1yF9HWdBn3d4THnvAAhkv1TraSx/T/MKS7g+jvk/HZ3mh5S3aw==",
|
|
||||||
"path": "discord.net.websocket/3.6.1",
|
|
||||||
"hashPath": "discord.net.websocket.3.6.1.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"Microsoft.Extensions.DependencyInjection.Abstractions/5.0.0": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-ORj7Zh81gC69TyvmcUm9tSzytcy8AVousi+IVRAI8nLieQjOFryRusSFh7+aLk16FN9pQNqJAiMd7BTKINK0kA==",
|
|
||||||
"path": "microsoft.extensions.dependencyinjection.abstractions/5.0.0",
|
|
||||||
"hashPath": "microsoft.extensions.dependencyinjection.abstractions.5.0.0.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"Newtonsoft.Json/13.0.1": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-ppPFpBcvxdsfUonNcvITKqLl3bqxWbDCZIzDWHzjpdAHRFfZe0Dw9HmA0+za13IdyrgJwpkDTDA9fHaxOrt20A==",
|
|
||||||
"path": "newtonsoft.json/13.0.1",
|
|
||||||
"hashPath": "newtonsoft.json.13.0.1.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"System.Collections.Immutable/5.0.0": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-FXkLXiK0sVVewcso0imKQoOxjoPAj42R8HtjjbSjVPAzwDfzoyoznWxgA3c38LDbN9SJux1xXoXYAhz98j7r2g==",
|
|
||||||
"path": "system.collections.immutable/5.0.0",
|
|
||||||
"hashPath": "system.collections.immutable.5.0.0.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"System.Interactive.Async/5.0.0": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-QaqhQVDiULcu4vm6o89+iP329HcK44cETHOYgy/jfEjtzeFy0ZxmuM7nel9ocjnKxEM4yh1mli7hgh8Q9o+/Iw==",
|
|
||||||
"path": "system.interactive.async/5.0.0",
|
|
||||||
"hashPath": "system.interactive.async.5.0.0.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"System.Linq.Async/5.0.0": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-cPtIuuH8TIjVHSi2ewwReWGW1PfChPE0LxPIDlfwVcLuTM9GANFTXiMB7k3aC4sk3f0cQU25LNKzx+jZMxijqw==",
|
|
||||||
"path": "system.linq.async/5.0.0",
|
|
||||||
"hashPath": "system.linq.async.5.0.0.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"System.Reactive/5.0.0": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-erBZjkQHWL9jpasCE/0qKAryzVBJFxGHVBAvgRN1bzM0q2s1S4oYREEEL0Vb+1kA/6BKb5FjUZMp5VXmy+gzkQ==",
|
|
||||||
"path": "system.reactive/5.0.0",
|
|
||||||
"hashPath": "system.reactive.5.0.0.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"System.ValueTuple/4.5.0": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-okurQJO6NRE/apDIP23ajJ0hpiNmJ+f0BwOlB/cSqTLQlw5upkf+5+96+iG2Jw40G1fCVCyPz/FhIABUjMR+RQ==",
|
|
||||||
"path": "system.valuetuple/4.5.0",
|
|
||||||
"hashPath": "system.valuetuple.4.5.0.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"PluginManager/1.0.0": {
|
|
||||||
"type": "project",
|
|
||||||
"serviceable": false,
|
|
||||||
"sha512": ""
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Binary file not shown.
Binary file not shown.
@@ -1,268 +0,0 @@
|
|||||||
{
|
|
||||||
"runtimeTarget": {
|
|
||||||
"name": ".NETCoreApp,Version=v6.0",
|
|
||||||
"signature": ""
|
|
||||||
},
|
|
||||||
"compilationOptions": {},
|
|
||||||
"targets": {
|
|
||||||
".NETCoreApp,Version=v6.0": {
|
|
||||||
"StartupEvents/1.0.0": {
|
|
||||||
"dependencies": {
|
|
||||||
"PluginManager": "1.0.0"
|
|
||||||
},
|
|
||||||
"runtime": {
|
|
||||||
"StartupEvents.dll": {}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Discord.Net/3.6.1": {
|
|
||||||
"dependencies": {
|
|
||||||
"Discord.Net.Commands": "3.6.1",
|
|
||||||
"Discord.Net.Core": "3.6.1",
|
|
||||||
"Discord.Net.Interactions": "3.6.1",
|
|
||||||
"Discord.Net.Rest": "3.6.1",
|
|
||||||
"Discord.Net.WebSocket": "3.6.1",
|
|
||||||
"Discord.Net.Webhook": "3.6.1"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Discord.Net.Commands/3.6.1": {
|
|
||||||
"dependencies": {
|
|
||||||
"Discord.Net.Core": "3.6.1"
|
|
||||||
},
|
|
||||||
"runtime": {
|
|
||||||
"lib/net6.0/Discord.Net.Commands.dll": {
|
|
||||||
"assemblyVersion": "3.6.1.0",
|
|
||||||
"fileVersion": "3.6.1.0"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Discord.Net.Core/3.6.1": {
|
|
||||||
"dependencies": {
|
|
||||||
"Newtonsoft.Json": "13.0.1",
|
|
||||||
"System.Collections.Immutable": "5.0.0",
|
|
||||||
"System.Interactive.Async": "5.0.0",
|
|
||||||
"System.ValueTuple": "4.5.0"
|
|
||||||
},
|
|
||||||
"runtime": {
|
|
||||||
"lib/net6.0/Discord.Net.Core.dll": {
|
|
||||||
"assemblyVersion": "3.6.1.0",
|
|
||||||
"fileVersion": "3.6.1.0"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Discord.Net.Interactions/3.6.1": {
|
|
||||||
"dependencies": {
|
|
||||||
"Discord.Net.Core": "3.6.1",
|
|
||||||
"Discord.Net.Rest": "3.6.1",
|
|
||||||
"Discord.Net.WebSocket": "3.6.1",
|
|
||||||
"Microsoft.Extensions.DependencyInjection.Abstractions": "5.0.0",
|
|
||||||
"System.Collections.Immutable": "5.0.0",
|
|
||||||
"System.Reactive": "5.0.0"
|
|
||||||
},
|
|
||||||
"runtime": {
|
|
||||||
"lib/net6.0/Discord.Net.Interactions.dll": {
|
|
||||||
"assemblyVersion": "3.6.1.0",
|
|
||||||
"fileVersion": "3.6.1.0"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Discord.Net.Rest/3.6.1": {
|
|
||||||
"dependencies": {
|
|
||||||
"Discord.Net.Core": "3.6.1"
|
|
||||||
},
|
|
||||||
"runtime": {
|
|
||||||
"lib/net6.0/Discord.Net.Rest.dll": {
|
|
||||||
"assemblyVersion": "3.6.1.0",
|
|
||||||
"fileVersion": "3.6.1.0"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Discord.Net.Webhook/3.6.1": {
|
|
||||||
"dependencies": {
|
|
||||||
"Discord.Net.Core": "3.6.1",
|
|
||||||
"Discord.Net.Rest": "3.6.1"
|
|
||||||
},
|
|
||||||
"runtime": {
|
|
||||||
"lib/net6.0/Discord.Net.Webhook.dll": {
|
|
||||||
"assemblyVersion": "3.6.1.0",
|
|
||||||
"fileVersion": "3.6.1.0"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Discord.Net.WebSocket/3.6.1": {
|
|
||||||
"dependencies": {
|
|
||||||
"Discord.Net.Core": "3.6.1",
|
|
||||||
"Discord.Net.Rest": "3.6.1"
|
|
||||||
},
|
|
||||||
"runtime": {
|
|
||||||
"lib/net6.0/Discord.Net.WebSocket.dll": {
|
|
||||||
"assemblyVersion": "3.6.1.0",
|
|
||||||
"fileVersion": "3.6.1.0"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Microsoft.Extensions.DependencyInjection.Abstractions/5.0.0": {
|
|
||||||
"runtime": {
|
|
||||||
"lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": {
|
|
||||||
"assemblyVersion": "5.0.0.0",
|
|
||||||
"fileVersion": "5.0.20.51904"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Newtonsoft.Json/13.0.1": {
|
|
||||||
"runtime": {
|
|
||||||
"lib/netstandard2.0/Newtonsoft.Json.dll": {
|
|
||||||
"assemblyVersion": "13.0.0.0",
|
|
||||||
"fileVersion": "13.0.1.25517"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"System.Collections.Immutable/5.0.0": {},
|
|
||||||
"System.Interactive.Async/5.0.0": {
|
|
||||||
"dependencies": {
|
|
||||||
"System.Linq.Async": "5.0.0"
|
|
||||||
},
|
|
||||||
"runtime": {
|
|
||||||
"lib/netcoreapp3.1/System.Interactive.Async.dll": {
|
|
||||||
"assemblyVersion": "5.0.0.0",
|
|
||||||
"fileVersion": "5.0.0.1"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"System.Linq.Async/5.0.0": {
|
|
||||||
"runtime": {
|
|
||||||
"lib/netcoreapp3.1/System.Linq.Async.dll": {
|
|
||||||
"assemblyVersion": "5.0.0.0",
|
|
||||||
"fileVersion": "5.0.0.1"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"System.Reactive/5.0.0": {
|
|
||||||
"runtime": {
|
|
||||||
"lib/net5.0/System.Reactive.dll": {
|
|
||||||
"assemblyVersion": "5.0.0.0",
|
|
||||||
"fileVersion": "5.0.0.1"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"System.ValueTuple/4.5.0": {},
|
|
||||||
"PluginManager/1.0.0": {
|
|
||||||
"dependencies": {
|
|
||||||
"Discord.Net": "3.6.1"
|
|
||||||
},
|
|
||||||
"runtime": {
|
|
||||||
"PluginManager.dll": {}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"libraries": {
|
|
||||||
"StartupEvents/1.0.0": {
|
|
||||||
"type": "project",
|
|
||||||
"serviceable": false,
|
|
||||||
"sha512": ""
|
|
||||||
},
|
|
||||||
"Discord.Net/3.6.1": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-TfcL/HG57fVt//WVJ2XyF2PlytY9IYkkwwkPLIhvu5FW4wf9rm7+N8RPh4qtELLfsa5ES0FK2RbgYjABRR9AjA==",
|
|
||||||
"path": "discord.net/3.6.1",
|
|
||||||
"hashPath": "discord.net.3.6.1.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"Discord.Net.Commands/3.6.1": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-kK7m571yzSzPd93o+n8Z+TfvX62BT1HtOEZIWXKwXWO8itP/sgqBNExjWK/6DOpkbD6+khc2f3rp+TA0rJD88g==",
|
|
||||||
"path": "discord.net.commands/3.6.1",
|
|
||||||
"hashPath": "discord.net.commands.3.6.1.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"Discord.Net.Core/3.6.1": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-ibVjQiWzgqh0GyP/GXE2kv3TA/9ysmmNFG/WmRE7GepQQAXXGxVUO9IMJ8h14EvIXMQ0m0DktMe5DkUnilo3Ag==",
|
|
||||||
"path": "discord.net.core/3.6.1",
|
|
||||||
"hashPath": "discord.net.core.3.6.1.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"Discord.Net.Interactions/3.6.1": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-WGOxz6SMUu4WS5b/JdrhlwQletcplBIYqvjFBBDfnqE+uNJqcNGtAdyjLqIILfXGx8aSSSSYZSCeAUa7FZ8Yew==",
|
|
||||||
"path": "discord.net.interactions/3.6.1",
|
|
||||||
"hashPath": "discord.net.interactions.3.6.1.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"Discord.Net.Rest/3.6.1": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-T7RRThIS23roFEJwTL1l7aawjVyn7ZB5yH3tMge0d6TiCzzp4V4FAZ+ArTt19LHRFhPly90v8V3sWqmTMN+5Zg==",
|
|
||||||
"path": "discord.net.rest/3.6.1",
|
|
||||||
"hashPath": "discord.net.rest.3.6.1.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"Discord.Net.Webhook/3.6.1": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-xikKHIGAIMz0BzHkaTKb48DNpFjKW8mvJjLJSezJ1xQOu+laHNk/hav4qxVtyZz7HSI/vGTkmlq9hKVhWzpaUA==",
|
|
||||||
"path": "discord.net.webhook/3.6.1",
|
|
||||||
"hashPath": "discord.net.webhook.3.6.1.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"Discord.Net.WebSocket/3.6.1": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-hF22Xy7URlVEDQZ69INOgzPvFUsIDfd+r6U+1yF9HWdBn3d4THnvAAhkv1TraSx/T/MKS7g+jvk/HZ3mh5S3aw==",
|
|
||||||
"path": "discord.net.websocket/3.6.1",
|
|
||||||
"hashPath": "discord.net.websocket.3.6.1.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"Microsoft.Extensions.DependencyInjection.Abstractions/5.0.0": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-ORj7Zh81gC69TyvmcUm9tSzytcy8AVousi+IVRAI8nLieQjOFryRusSFh7+aLk16FN9pQNqJAiMd7BTKINK0kA==",
|
|
||||||
"path": "microsoft.extensions.dependencyinjection.abstractions/5.0.0",
|
|
||||||
"hashPath": "microsoft.extensions.dependencyinjection.abstractions.5.0.0.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"Newtonsoft.Json/13.0.1": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-ppPFpBcvxdsfUonNcvITKqLl3bqxWbDCZIzDWHzjpdAHRFfZe0Dw9HmA0+za13IdyrgJwpkDTDA9fHaxOrt20A==",
|
|
||||||
"path": "newtonsoft.json/13.0.1",
|
|
||||||
"hashPath": "newtonsoft.json.13.0.1.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"System.Collections.Immutable/5.0.0": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-FXkLXiK0sVVewcso0imKQoOxjoPAj42R8HtjjbSjVPAzwDfzoyoznWxgA3c38LDbN9SJux1xXoXYAhz98j7r2g==",
|
|
||||||
"path": "system.collections.immutable/5.0.0",
|
|
||||||
"hashPath": "system.collections.immutable.5.0.0.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"System.Interactive.Async/5.0.0": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-QaqhQVDiULcu4vm6o89+iP329HcK44cETHOYgy/jfEjtzeFy0ZxmuM7nel9ocjnKxEM4yh1mli7hgh8Q9o+/Iw==",
|
|
||||||
"path": "system.interactive.async/5.0.0",
|
|
||||||
"hashPath": "system.interactive.async.5.0.0.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"System.Linq.Async/5.0.0": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-cPtIuuH8TIjVHSi2ewwReWGW1PfChPE0LxPIDlfwVcLuTM9GANFTXiMB7k3aC4sk3f0cQU25LNKzx+jZMxijqw==",
|
|
||||||
"path": "system.linq.async/5.0.0",
|
|
||||||
"hashPath": "system.linq.async.5.0.0.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"System.Reactive/5.0.0": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-erBZjkQHWL9jpasCE/0qKAryzVBJFxGHVBAvgRN1bzM0q2s1S4oYREEEL0Vb+1kA/6BKb5FjUZMp5VXmy+gzkQ==",
|
|
||||||
"path": "system.reactive/5.0.0",
|
|
||||||
"hashPath": "system.reactive.5.0.0.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"System.ValueTuple/4.5.0": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-okurQJO6NRE/apDIP23ajJ0hpiNmJ+f0BwOlB/cSqTLQlw5upkf+5+96+iG2Jw40G1fCVCyPz/FhIABUjMR+RQ==",
|
|
||||||
"path": "system.valuetuple/4.5.0",
|
|
||||||
"hashPath": "system.valuetuple.4.5.0.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"PluginManager/1.0.0": {
|
|
||||||
"type": "project",
|
|
||||||
"serviceable": false,
|
|
||||||
"sha512": ""
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Binary file not shown.
@@ -1,21 +0,0 @@
|
|||||||
<Project Sdk="Microsoft.NET.Sdk">
|
|
||||||
|
|
||||||
<PropertyGroup>
|
|
||||||
<TargetFramework>net6.0</TargetFramework>
|
|
||||||
</PropertyGroup>
|
|
||||||
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
|
|
||||||
<OutputPath>..\BUILDS\</OutputPath>
|
|
||||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
|
||||||
<ErrorReport>prompt</ErrorReport>
|
|
||||||
<DebugType>none</DebugType>
|
|
||||||
<DebugSymbols>false</DebugSymbols>
|
|
||||||
<TreatWarningsAsErrors>false</TreatWarningsAsErrors>
|
|
||||||
<WarningsAsErrors />
|
|
||||||
</PropertyGroup>
|
|
||||||
|
|
||||||
<ItemGroup>
|
|
||||||
<ProjectReference Include="..\PluginManager\PluginManager.csproj" />
|
|
||||||
</ItemGroup>
|
|
||||||
|
|
||||||
</Project>
|
|
||||||
@@ -1,61 +0,0 @@
|
|||||||
using Discord;
|
|
||||||
using Discord.Commands;
|
|
||||||
using Discord.WebSocket;
|
|
||||||
|
|
||||||
using PluginManager.Interfaces;
|
|
||||||
using PluginManager.LanguageSystem;
|
|
||||||
|
|
||||||
using System;
|
|
||||||
|
|
||||||
|
|
||||||
public class level : DBCommand
|
|
||||||
{
|
|
||||||
public string Command => "rank";
|
|
||||||
|
|
||||||
public string Description => "Display your current level";
|
|
||||||
|
|
||||||
public string Usage => "rank";
|
|
||||||
|
|
||||||
public bool canUseDM => false;
|
|
||||||
|
|
||||||
public bool canUseServer => true;
|
|
||||||
|
|
||||||
public bool requireAdmin => false;
|
|
||||||
|
|
||||||
public async void Execute(SocketCommandContext context, SocketMessage message, DiscordSocketClient client, bool isDM)
|
|
||||||
{
|
|
||||||
|
|
||||||
try
|
|
||||||
{
|
|
||||||
int cLv = Data.GetLevel(message.Author.Id);
|
|
||||||
Int64 cEXP = Data.GetExp(message.Author.Id);
|
|
||||||
Int64 rEXP = Data.GetReqEXP(message.Author.Id);
|
|
||||||
|
|
||||||
var embed = new EmbedBuilder()
|
|
||||||
{
|
|
||||||
Title = "Leveling System",
|
|
||||||
Description = message.Author.Mention
|
|
||||||
};
|
|
||||||
Random r = new Random();
|
|
||||||
int _r = r.Next(0, 256);
|
|
||||||
int _g = r.Next(0, 256);
|
|
||||||
int _b = r.Next(0, 256);
|
|
||||||
embed.WithColor(new Color(_r, _g, _b));
|
|
||||||
embed.AddField("Level", cLv);
|
|
||||||
embed.AddField("Current EXP", cEXP);
|
|
||||||
embed.AddField("Required Exp to Level up", rEXP);
|
|
||||||
embed.WithCurrentTimestamp();
|
|
||||||
await message.Channel.SendMessageAsync(embed: embed.Build());
|
|
||||||
}
|
|
||||||
catch
|
|
||||||
{
|
|
||||||
if (Language.ActiveLanguage != null)
|
|
||||||
await message.Channel.SendMessageAsync(Language.ActiveLanguage.LanguageWords["DB_COMMAND_RANK_NO_RANK"]);
|
|
||||||
else await message.Channel.SendMessageAsync("You are unranked now. Please type a message in chat that is not a command and try again this command");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -1,62 +0,0 @@
|
|||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.IO;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
public class Core
|
|
||||||
{
|
|
||||||
|
|
||||||
public static Dictionary<ulong, string> playerMessages = new Dictionary<ulong, string>();
|
|
||||||
|
|
||||||
private static readonly string folder = @".\Data\Resources\LevelingSystem\";
|
|
||||||
|
|
||||||
public static int GetLevel(ulong id) => int.Parse(File.ReadAllText(Path.Combine(folder, id.ToString() + ".data")).Split(',')[0].Split('=')[1]);
|
|
||||||
|
|
||||||
|
|
||||||
public static Int64 GetExp(ulong id) => Int64.Parse(File.ReadAllText(Path.Combine(folder, id.ToString() + ".data")).Split(',')[1].Split('=')[1]);
|
|
||||||
|
|
||||||
|
|
||||||
public static Int64 GetReqEXP(ulong id) => Int64.Parse(File.ReadAllText(Path.Combine(folder, id.ToString() + ".data")).Split(',')[2].Split('=')[1]);
|
|
||||||
public static void SaveData(ulong id, int lv, Int64 cexp, Int64 rexp)
|
|
||||||
{
|
|
||||||
Directory.CreateDirectory(folder);
|
|
||||||
File.WriteAllText(Path.Combine(folder, id.ToString() + ".data"), $"Level={lv},EXP={cexp},REXP={rexp}");
|
|
||||||
}
|
|
||||||
private static Int64 NextLevelXP(int level)
|
|
||||||
{
|
|
||||||
return (level * level) + 2 * level + 75;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static (bool, int) MessageSent(ulong id, int messageLength)
|
|
||||||
{
|
|
||||||
WaitForTimeToRemoveFromList(id, 60);
|
|
||||||
|
|
||||||
if (!File.Exists(Path.Combine(folder, id.ToString() + ".data")))
|
|
||||||
{
|
|
||||||
SaveData(id, 0, 0, 0);
|
|
||||||
}
|
|
||||||
Int64 cEXp = GetExp(id);
|
|
||||||
Int64 rExp = GetReqEXP(id);
|
|
||||||
int random = new System.Random().Next(3, 6) + messageLength;
|
|
||||||
cEXp += random;
|
|
||||||
if (cEXp >= rExp)
|
|
||||||
{
|
|
||||||
cEXp = cEXp - rExp;
|
|
||||||
int lv = GetLevel(id);
|
|
||||||
rExp = NextLevelXP(lv);
|
|
||||||
lv++;
|
|
||||||
SaveData(id, lv, cEXp, rExp);
|
|
||||||
return (true, lv);
|
|
||||||
}
|
|
||||||
|
|
||||||
SaveData(id, GetLevel(id), cEXp, rExp);
|
|
||||||
return (false, -1);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static async void WaitForTimeToRemoveFromList(ulong id, int time_seconds)
|
|
||||||
{
|
|
||||||
await Task.Delay(time_seconds * 1000);
|
|
||||||
playerMessages.Remove(id);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,24 +0,0 @@
|
|||||||
using Discord.WebSocket;
|
|
||||||
|
|
||||||
using System;
|
|
||||||
using System.IO;
|
|
||||||
public static class Data
|
|
||||||
{
|
|
||||||
private static readonly string folder = @".\Data\Resources\LevelingSystem\";
|
|
||||||
public static void registerPlayer(SocketGuildUser user)
|
|
||||||
{
|
|
||||||
ulong id = user.Id;
|
|
||||||
Directory.CreateDirectory(folder);
|
|
||||||
File.WriteAllText(Path.Combine(folder, id.ToString() + ".data"), "Level=0,EXP=0,REXP=100");
|
|
||||||
}
|
|
||||||
|
|
||||||
public static int GetLevel(ulong id) => int.Parse(File.ReadAllText(Path.Combine(folder, id.ToString() + ".data")).Split(',')[0].Split('=')[1]);
|
|
||||||
|
|
||||||
|
|
||||||
public static Int64 GetExp(ulong id) => Int64.Parse(File.ReadAllText(Path.Combine(folder, id.ToString() + ".data")).Split(',')[1].Split('=')[1]);
|
|
||||||
|
|
||||||
|
|
||||||
public static Int64 GetReqEXP(ulong id) => Int64.Parse(File.ReadAllText(Path.Combine(folder, id.ToString() + ".data")).Split(',')[2].Split('=')[1]);
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,18 +0,0 @@
|
|||||||
<Project Sdk="Microsoft.NET.Sdk">
|
|
||||||
|
|
||||||
<PropertyGroup>
|
|
||||||
<TargetFramework>net6.0</TargetFramework>
|
|
||||||
</PropertyGroup>
|
|
||||||
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
|
|
||||||
<OutputPath>..\BUILDS\</OutputPath>
|
|
||||||
<ErrorReport>prompt</ErrorReport>
|
|
||||||
<DebugType>none</DebugType>
|
|
||||||
<DebugSymbols>false</DebugSymbols>
|
|
||||||
</PropertyGroup>
|
|
||||||
|
|
||||||
<ItemGroup>
|
|
||||||
<ProjectReference Include="..\PluginManager\PluginManager.csproj" />
|
|
||||||
</ItemGroup>
|
|
||||||
|
|
||||||
</Project>
|
|
||||||
@@ -1,24 +0,0 @@
|
|||||||
using Discord.Commands;
|
|
||||||
using Discord.WebSocket;
|
|
||||||
|
|
||||||
using PluginManager.Interfaces;
|
|
||||||
|
|
||||||
internal class Echo : DBCommand
|
|
||||||
{
|
|
||||||
public string Command => "echo";
|
|
||||||
|
|
||||||
public string Description => "Replay with the same message";
|
|
||||||
|
|
||||||
public string Usage => "echo [message]";
|
|
||||||
|
|
||||||
public bool canUseDM => true;
|
|
||||||
public bool canUseServer => true;
|
|
||||||
|
|
||||||
public bool requireAdmin => false;
|
|
||||||
|
|
||||||
public async void Execute(SocketCommandContext context, SocketMessage message, DiscordSocketClient client, bool isDM)
|
|
||||||
{
|
|
||||||
string m = message.Content.Substring(6);
|
|
||||||
await message.Channel.SendMessageAsync(m);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,37 +0,0 @@
|
|||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
using Discord.Commands;
|
|
||||||
using Discord.WebSocket;
|
|
||||||
|
|
||||||
using PluginManager.Interfaces;
|
|
||||||
|
|
||||||
namespace CMD_Utils
|
|
||||||
{
|
|
||||||
class FlipCoin : DBCommand
|
|
||||||
{
|
|
||||||
public string Command => "flip";
|
|
||||||
|
|
||||||
public string Description => "Flip a coin";
|
|
||||||
|
|
||||||
public string Usage => "flip";
|
|
||||||
|
|
||||||
public bool canUseDM => true;
|
|
||||||
|
|
||||||
public bool canUseServer => true;
|
|
||||||
|
|
||||||
public bool requireAdmin => false;
|
|
||||||
|
|
||||||
public async void Execute(SocketCommandContext context, SocketMessage message, DiscordSocketClient client, bool isDM)
|
|
||||||
{
|
|
||||||
System.Random random = new System.Random();
|
|
||||||
int r = random.Next(1, 3);
|
|
||||||
if (r == 1)
|
|
||||||
await message.Channel.SendMessageAsync("Heads");
|
|
||||||
else await message.Channel.SendMessageAsync("Tails");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,53 +0,0 @@
|
|||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
using Discord;
|
|
||||||
using Discord.Commands;
|
|
||||||
using Discord.WebSocket;
|
|
||||||
|
|
||||||
using PluginManager.Interfaces;
|
|
||||||
|
|
||||||
namespace CMD_Utils
|
|
||||||
{
|
|
||||||
public class Poll : DBCommand
|
|
||||||
{
|
|
||||||
public string Command => "poll";
|
|
||||||
|
|
||||||
public string Description => "Create a poll with options";
|
|
||||||
|
|
||||||
public string Usage => "poll [This-is-question] [This-is-answer-1] [This-is-answer-2] ... ";
|
|
||||||
|
|
||||||
public bool canUseDM => false;
|
|
||||||
|
|
||||||
public bool canUseServer => true;
|
|
||||||
|
|
||||||
public bool requireAdmin => true;
|
|
||||||
|
|
||||||
public async void Execute(SocketCommandContext context, SocketMessage message, DiscordSocketClient client, bool isDM)
|
|
||||||
{
|
|
||||||
if (isDM) return;
|
|
||||||
string question = message.Content.Split(' ')[1].Replace('-', ' ');
|
|
||||||
string[] answers = PluginManager.Others.Functions.MergeStrings(message.Content.Split(' '), 2).Split(' ');
|
|
||||||
EmbedBuilder embedBuilder = new EmbedBuilder();
|
|
||||||
embedBuilder.Title = question;
|
|
||||||
int len = answers.Length;
|
|
||||||
for (int i = 0; i < len; i++)
|
|
||||||
embedBuilder.AddField($"Answer {i + 1}", answers[i].Replace('-', ' '), true);
|
|
||||||
var msg = await context.Channel.SendMessageAsync(embed: embedBuilder.Build());
|
|
||||||
|
|
||||||
List<IEmote> emotes = new List<IEmote>();
|
|
||||||
emotes.Add(Emoji.Parse(":one:"));
|
|
||||||
emotes.Add(Emoji.Parse(":two:"));
|
|
||||||
emotes.Add(Emoji.Parse(":three:"));
|
|
||||||
emotes.Add(Emoji.Parse(":four:"));
|
|
||||||
emotes.Add(Emoji.Parse(":five:"));
|
|
||||||
emotes.Add(Emoji.Parse(":six:"));
|
|
||||||
|
|
||||||
for (int i = 0; i < len; i++)
|
|
||||||
await msg.AddReactionAsync(emotes[i]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,41 +0,0 @@
|
|||||||
using Discord.Commands;
|
|
||||||
using Discord.WebSocket;
|
|
||||||
|
|
||||||
using PluginManager.Interfaces;
|
|
||||||
|
|
||||||
public class Random : DBCommand
|
|
||||||
{
|
|
||||||
public string Command => "random";
|
|
||||||
|
|
||||||
public string Description => "random number between number1 and number2";
|
|
||||||
|
|
||||||
public string Usage => "random [number1] [number2]";
|
|
||||||
|
|
||||||
public bool canUseDM => true;
|
|
||||||
public bool canUseServer => true;
|
|
||||||
public bool requireAdmin => false;
|
|
||||||
|
|
||||||
public async void Execute(SocketCommandContext context, SocketMessage message, DiscordSocketClient client, bool isDM)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
string msg = message.Content;
|
|
||||||
int a = int.Parse(msg.Split(' ')[1]);
|
|
||||||
int b = int.Parse(msg.Split(' ')[2]);
|
|
||||||
|
|
||||||
if (a > b)
|
|
||||||
{
|
|
||||||
int x = a;
|
|
||||||
a = b;
|
|
||||||
b = x;
|
|
||||||
}
|
|
||||||
|
|
||||||
await message.Channel.SendMessageAsync("Your random generated number is " + new System.Random().Next(a, b));
|
|
||||||
|
|
||||||
}
|
|
||||||
catch
|
|
||||||
{
|
|
||||||
await message.Channel.SendMessageAsync("Invalid numbers or no numbers:\nUsage: " + Usage);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,90 +0,0 @@
|
|||||||
|
|
||||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
|
||||||
# Visual Studio Version 17
|
|
||||||
VisualStudioVersion = 17.1.32421.90
|
|
||||||
MinimumVisualStudioVersion = 10.0.40219.1
|
|
||||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DiscordBot", "DiscordBot\DiscordBot.csproj", "{087E64F4-1E1C-4899-8223-295356C9894A}"
|
|
||||||
EndProject
|
|
||||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PluginManager", "PluginManager\PluginManager.csproj", "{EDD4D9B3-98DD-4367-A09F-D1C5ACB61132}"
|
|
||||||
EndProject
|
|
||||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Plugins", "Plugins", "{1862ABD5-7C30-4F15-A561-45AC8A9CA10E}"
|
|
||||||
EndProject
|
|
||||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Events", "Events", "{A290C028-77C4-4D1D-AB43-DDFE6ABD9012}"
|
|
||||||
EndProject
|
|
||||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Commands", "Commands", "{449FA364-0B72-43FF-B3A3-806E2916200E}"
|
|
||||||
EndProject
|
|
||||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CMD_LevelingSystem", "CMD_LevelingSystem\CMD_LevelingSystem.csproj", "{A48E8DC6-DBA2-4B47-9D59-46F4835F82CC}"
|
|
||||||
EndProject
|
|
||||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EVE_LevelingSystem", "EVE_LevelingSystem\EVE_LevelingSystem.csproj", "{1C1E7F3D-E05A-4A87-9789-62D98904C200}"
|
|
||||||
EndProject
|
|
||||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "StartupEvents", "StartupEvents\StartupEvents.csproj", "{CE9DBF06-38A0-4192-8B3E-4009210D040D}"
|
|
||||||
EndProject
|
|
||||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CMD_Utils", "CMD_Utils\CMD_Utils.csproj", "{E26C87A4-3DD6-4B58-B14B-C8E086B852F9}"
|
|
||||||
EndProject
|
|
||||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MusicCommands", "MusicCommands\MusicCommands.csproj", "{B1B4976E-5112-4217-B57B-3A03C5207B6E}"
|
|
||||||
EndProject
|
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Holiday events", "Holiday events\Holiday events.csproj", "{108BD621-EC08-4AC4-86D2-79B429562A90}"
|
|
||||||
EndProject
|
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "New User", "New User\New User.csproj", "{02217691-EF7E-4FB2-91FC-C6EF07BF6094}"
|
|
||||||
EndProject
|
|
||||||
Global
|
|
||||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
|
||||||
Debug|Any CPU = Debug|Any CPU
|
|
||||||
Release|Any CPU = Release|Any CPU
|
|
||||||
EndGlobalSection
|
|
||||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
|
||||||
{087E64F4-1E1C-4899-8223-295356C9894A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
|
||||||
{087E64F4-1E1C-4899-8223-295356C9894A}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
|
||||||
{087E64F4-1E1C-4899-8223-295356C9894A}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
|
||||||
{087E64F4-1E1C-4899-8223-295356C9894A}.Release|Any CPU.Build.0 = Release|Any CPU
|
|
||||||
{EDD4D9B3-98DD-4367-A09F-D1C5ACB61132}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
|
||||||
{EDD4D9B3-98DD-4367-A09F-D1C5ACB61132}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
|
||||||
{EDD4D9B3-98DD-4367-A09F-D1C5ACB61132}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
|
||||||
{EDD4D9B3-98DD-4367-A09F-D1C5ACB61132}.Release|Any CPU.Build.0 = Release|Any CPU
|
|
||||||
{A48E8DC6-DBA2-4B47-9D59-46F4835F82CC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
|
||||||
{A48E8DC6-DBA2-4B47-9D59-46F4835F82CC}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
|
||||||
{A48E8DC6-DBA2-4B47-9D59-46F4835F82CC}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
|
||||||
{A48E8DC6-DBA2-4B47-9D59-46F4835F82CC}.Release|Any CPU.Build.0 = Release|Any CPU
|
|
||||||
{1C1E7F3D-E05A-4A87-9789-62D98904C200}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
|
||||||
{1C1E7F3D-E05A-4A87-9789-62D98904C200}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
|
||||||
{1C1E7F3D-E05A-4A87-9789-62D98904C200}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
|
||||||
{1C1E7F3D-E05A-4A87-9789-62D98904C200}.Release|Any CPU.Build.0 = Release|Any CPU
|
|
||||||
{CE9DBF06-38A0-4192-8B3E-4009210D040D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
|
||||||
{CE9DBF06-38A0-4192-8B3E-4009210D040D}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
|
||||||
{CE9DBF06-38A0-4192-8B3E-4009210D040D}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
|
||||||
{CE9DBF06-38A0-4192-8B3E-4009210D040D}.Release|Any CPU.Build.0 = Release|Any CPU
|
|
||||||
{E26C87A4-3DD6-4B58-B14B-C8E086B852F9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
|
||||||
{E26C87A4-3DD6-4B58-B14B-C8E086B852F9}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
|
||||||
{E26C87A4-3DD6-4B58-B14B-C8E086B852F9}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
|
||||||
{E26C87A4-3DD6-4B58-B14B-C8E086B852F9}.Release|Any CPU.Build.0 = Release|Any CPU
|
|
||||||
{B1B4976E-5112-4217-B57B-3A03C5207B6E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
|
||||||
{B1B4976E-5112-4217-B57B-3A03C5207B6E}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
|
||||||
{B1B4976E-5112-4217-B57B-3A03C5207B6E}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
|
||||||
{B1B4976E-5112-4217-B57B-3A03C5207B6E}.Release|Any CPU.Build.0 = Release|Any CPU
|
|
||||||
{108BD621-EC08-4AC4-86D2-79B429562A90}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
|
||||||
{108BD621-EC08-4AC4-86D2-79B429562A90}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
|
||||||
{108BD621-EC08-4AC4-86D2-79B429562A90}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
|
||||||
{108BD621-EC08-4AC4-86D2-79B429562A90}.Release|Any CPU.Build.0 = Release|Any CPU
|
|
||||||
{02217691-EF7E-4FB2-91FC-C6EF07BF6094}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
|
||||||
{02217691-EF7E-4FB2-91FC-C6EF07BF6094}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
|
||||||
{02217691-EF7E-4FB2-91FC-C6EF07BF6094}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
|
||||||
{02217691-EF7E-4FB2-91FC-C6EF07BF6094}.Release|Any CPU.Build.0 = Release|Any CPU
|
|
||||||
EndGlobalSection
|
|
||||||
GlobalSection(SolutionProperties) = preSolution
|
|
||||||
HideSolutionNode = FALSE
|
|
||||||
EndGlobalSection
|
|
||||||
GlobalSection(NestedProjects) = preSolution
|
|
||||||
{A290C028-77C4-4D1D-AB43-DDFE6ABD9012} = {1862ABD5-7C30-4F15-A561-45AC8A9CA10E}
|
|
||||||
{449FA364-0B72-43FF-B3A3-806E2916200E} = {1862ABD5-7C30-4F15-A561-45AC8A9CA10E}
|
|
||||||
{A48E8DC6-DBA2-4B47-9D59-46F4835F82CC} = {449FA364-0B72-43FF-B3A3-806E2916200E}
|
|
||||||
{1C1E7F3D-E05A-4A87-9789-62D98904C200} = {A290C028-77C4-4D1D-AB43-DDFE6ABD9012}
|
|
||||||
{CE9DBF06-38A0-4192-8B3E-4009210D040D} = {A290C028-77C4-4D1D-AB43-DDFE6ABD9012}
|
|
||||||
{E26C87A4-3DD6-4B58-B14B-C8E086B852F9} = {449FA364-0B72-43FF-B3A3-806E2916200E}
|
|
||||||
{B1B4976E-5112-4217-B57B-3A03C5207B6E} = {449FA364-0B72-43FF-B3A3-806E2916200E}
|
|
||||||
{108BD621-EC08-4AC4-86D2-79B429562A90} = {A290C028-77C4-4D1D-AB43-DDFE6ABD9012}
|
|
||||||
{02217691-EF7E-4FB2-91FC-C6EF07BF6094} = {A290C028-77C4-4D1D-AB43-DDFE6ABD9012}
|
|
||||||
EndGlobalSection
|
|
||||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
|
||||||
SolutionGuid = {3FB3C5DE-ED21-4D2E-ABDD-3A00EE4A2FFF}
|
|
||||||
EndGlobalSection
|
|
||||||
EndGlobal
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
<dependentAssembly>
|
|
||||||
<assemblyIdentity name="System.Runtime" publicKeyToken="b03f5f7f11d50a3a" culture="neutral"/>
|
|
||||||
<bindingRedirect oldVersion="0.0.0.0-5.0.0.0" newVersion="4.0.0.0"/>
|
|
||||||
</dependentAssembly>
|
|
||||||
28
DiscordBot/Bot/Actions/Clear.cs
Normal file
28
DiscordBot/Bot/Actions/Clear.cs
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using PluginManager.Interfaces;
|
||||||
|
using PluginManager.Others;
|
||||||
|
using PluginManager.Others.Actions;
|
||||||
|
|
||||||
|
namespace DiscordBot.Bot.Actions;
|
||||||
|
|
||||||
|
public class Clear: ICommandAction
|
||||||
|
{
|
||||||
|
public string ActionName => "clear";
|
||||||
|
public string Description => "Clears the console";
|
||||||
|
public string Usage => "clear";
|
||||||
|
public IEnumerable<InternalActionOption> ListOfOptions => [];
|
||||||
|
|
||||||
|
public InternalActionRunType RunType => InternalActionRunType.ON_CALL;
|
||||||
|
|
||||||
|
public Task Execute(string[] args)
|
||||||
|
{
|
||||||
|
Console.Clear();
|
||||||
|
Console.ForegroundColor = ConsoleColor.Yellow;
|
||||||
|
Console.WriteLine("===== Seth Discord Bot =====");
|
||||||
|
Console.ResetColor();
|
||||||
|
return Task.CompletedTask;
|
||||||
|
}
|
||||||
|
}
|
||||||
53
DiscordBot/Bot/Actions/Exit.cs
Normal file
53
DiscordBot/Bot/Actions/Exit.cs
Normal file
@@ -0,0 +1,53 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using PluginManager;
|
||||||
|
using PluginManager.Interfaces;
|
||||||
|
using PluginManager.Others;
|
||||||
|
using PluginManager.Others.Actions;
|
||||||
|
|
||||||
|
namespace DiscordBot.Bot.Actions;
|
||||||
|
|
||||||
|
public class Exit: ICommandAction
|
||||||
|
{
|
||||||
|
public string ActionName => "exit";
|
||||||
|
public string Description => "Exits the bot and saves the config. Use exit help for more info.";
|
||||||
|
public string Usage => "exit <option?>";
|
||||||
|
public IEnumerable<InternalActionOption> ListOfOptions => new List<InternalActionOption>
|
||||||
|
{
|
||||||
|
new InternalActionOption("help", "Displays this message"),
|
||||||
|
new InternalActionOption("force | -f", "Exits the bot without saving the config")
|
||||||
|
};
|
||||||
|
public InternalActionRunType RunType => InternalActionRunType.ON_CALL;
|
||||||
|
|
||||||
|
public async Task Execute(string[] args)
|
||||||
|
{
|
||||||
|
if (args is null || args.Length == 0)
|
||||||
|
{
|
||||||
|
Config.Logger.Log("Exiting...", typeof(ICommandAction), LogType.WARNING);
|
||||||
|
await Config.AppSettings.SaveToFile();
|
||||||
|
Environment.Exit(0);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
switch (args[0])
|
||||||
|
{
|
||||||
|
case "help":
|
||||||
|
Console.WriteLine("Usage : exit [help|force]");
|
||||||
|
Console.WriteLine("help : Displays this message");
|
||||||
|
Console.WriteLine("force | -f : Exits the bot without saving the config");
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "-f":
|
||||||
|
case "force":
|
||||||
|
Config.Logger.Log("Exiting (FORCE)...", typeof(ICommandAction), LogType.WARNING);
|
||||||
|
Environment.Exit(0);
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
Console.WriteLine("Invalid argument !");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
206
DiscordBot/Bot/Actions/Extra/PluginMethods.cs
Normal file
206
DiscordBot/Bot/Actions/Extra/PluginMethods.cs
Normal file
@@ -0,0 +1,206 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Threading;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
using DiscordBot.Utilities;
|
||||||
|
|
||||||
|
using PluginManager;
|
||||||
|
using PluginManager.Interfaces;
|
||||||
|
using PluginManager.Loaders;
|
||||||
|
using PluginManager.Online;
|
||||||
|
using PluginManager.Others;
|
||||||
|
|
||||||
|
using Spectre.Console;
|
||||||
|
|
||||||
|
namespace DiscordBot.Bot.Actions.Extra;
|
||||||
|
|
||||||
|
internal static class PluginMethods
|
||||||
|
{
|
||||||
|
internal static async Task List(PluginsManager manager)
|
||||||
|
{
|
||||||
|
var data = await ConsoleUtilities.ExecuteWithProgressBar(manager.GetPluginsList(), "Reading remote database");
|
||||||
|
|
||||||
|
TableData tableData = new(["Name", "Description", "Version", "Is Installed"]);
|
||||||
|
|
||||||
|
var installedPlugins = await ConsoleUtilities.ExecuteWithProgressBar(manager.GetInstalledPlugins(), "Reading local database ");
|
||||||
|
|
||||||
|
foreach (var plugin in data)
|
||||||
|
{
|
||||||
|
bool isInstalled = installedPlugins.Any(p => p.PluginName == plugin.Name);
|
||||||
|
tableData.AddRow([plugin.Name, plugin.Description, plugin.Version.ToString(), isInstalled ? "Yes" : "No"]);
|
||||||
|
}
|
||||||
|
|
||||||
|
tableData.HasRoundBorders = false;
|
||||||
|
tableData.PrintTable();
|
||||||
|
}
|
||||||
|
|
||||||
|
internal static async Task RefreshPlugins(bool quiet)
|
||||||
|
{
|
||||||
|
await Program.internalActionManager.Execute("plugin", "load", quiet ? "-q" : string.Empty);
|
||||||
|
await Program.internalActionManager.Refresh();
|
||||||
|
}
|
||||||
|
|
||||||
|
internal static async Task DownloadPlugin(PluginsManager manager, string pluginName)
|
||||||
|
{
|
||||||
|
var pluginData = await manager.GetPluginDataByName(pluginName);
|
||||||
|
if (pluginData is null)
|
||||||
|
{
|
||||||
|
Console.WriteLine($"Plugin {pluginName} not found. Please check the spelling and try again.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var pluginLink = pluginData.DownLoadLink;
|
||||||
|
|
||||||
|
|
||||||
|
await AnsiConsole.Progress()
|
||||||
|
.Columns(new ProgressColumn[]
|
||||||
|
{
|
||||||
|
new TaskDescriptionColumn(), new ProgressBarColumn(), new PercentageColumn()
|
||||||
|
}
|
||||||
|
)
|
||||||
|
.StartAsync(async ctx =>
|
||||||
|
{
|
||||||
|
var downloadTask = ctx.AddTask("Downloading plugin...");
|
||||||
|
|
||||||
|
IProgress<float> progress = new Progress<float>(p => { downloadTask.Value = p; });
|
||||||
|
|
||||||
|
await ServerCom.DownloadFileAsync(pluginLink, $"{Config.AppSettings["PluginFolder"]}/{pluginName}.dll", progress);
|
||||||
|
|
||||||
|
downloadTask.Increment(100);
|
||||||
|
|
||||||
|
ctx.Refresh();
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
if (!pluginData.HasDependencies)
|
||||||
|
{
|
||||||
|
await manager.AppendPluginToDatabase(new PluginManager.Plugin.PluginInfo(pluginName, pluginData.Version, []));
|
||||||
|
Console.WriteLine("Finished installing " + pluginName + " successfully");
|
||||||
|
await RefreshPlugins(false);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
List<Tuple<ProgressTask, IProgress<float>, string, string>> downloadTasks = new();
|
||||||
|
await AnsiConsole.Progress()
|
||||||
|
.Columns(new ProgressColumn[]
|
||||||
|
{
|
||||||
|
new TaskDescriptionColumn(), new ProgressBarColumn(), new PercentageColumn()
|
||||||
|
}
|
||||||
|
)
|
||||||
|
.StartAsync(async ctx =>
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
|
foreach (var dependency in pluginData.Dependencies)
|
||||||
|
{
|
||||||
|
var task = ctx.AddTask($"Downloading {dependency.DownloadLocation}: ");
|
||||||
|
IProgress<float> progress = new Progress<float>(p =>
|
||||||
|
{
|
||||||
|
task.Value = p;
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
task.IsIndeterminate = true;
|
||||||
|
downloadTasks.Add(new Tuple<ProgressTask, IProgress<float>, string, string>(task, progress, dependency.DownloadLink, dependency.DownloadLocation));
|
||||||
|
}
|
||||||
|
|
||||||
|
int maxParallelDownloads = 5;
|
||||||
|
|
||||||
|
if (Config.AppSettings.ContainsKey("MaxParallelDownloads"))
|
||||||
|
maxParallelDownloads = int.Parse(Config.AppSettings["MaxParallelDownloads"]);
|
||||||
|
|
||||||
|
var options = new ParallelOptions()
|
||||||
|
{
|
||||||
|
MaxDegreeOfParallelism = maxParallelDownloads,
|
||||||
|
TaskScheduler = TaskScheduler.Default
|
||||||
|
};
|
||||||
|
|
||||||
|
await Parallel.ForEachAsync(downloadTasks, options, async (tuple, token) =>
|
||||||
|
{
|
||||||
|
tuple.Item1.IsIndeterminate = false;
|
||||||
|
await ServerCom.DownloadFileAsync(tuple.Item3, $"./{tuple.Item4}", tuple.Item2);
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
await manager.AppendPluginToDatabase(new PluginManager.Plugin.PluginInfo(pluginName, pluginData.Version, pluginData.Dependencies.Select(sep => sep.DownloadLocation).ToList()));
|
||||||
|
await RefreshPlugins(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
internal static async Task<bool> LoadPlugins(string[] args)
|
||||||
|
{
|
||||||
|
var loader = new PluginLoader(Config.DiscordBot.Client);
|
||||||
|
if (args.Length == 2 && args[1] == "-q")
|
||||||
|
{
|
||||||
|
await loader.LoadPlugins();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
var cc = Console.ForegroundColor;
|
||||||
|
loader.OnCommandLoaded += (data) =>
|
||||||
|
{
|
||||||
|
if (data.IsSuccess)
|
||||||
|
{
|
||||||
|
Config.Logger.Log("Successfully loaded command : " + data.PluginName, typeof(ICommandAction),
|
||||||
|
LogType.INFO
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Config.Logger.Log("Failed to load command : " + data.PluginName + " because " + data.ErrorMessage,
|
||||||
|
typeof(ICommandAction), LogType.ERROR
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
Console.ForegroundColor = cc;
|
||||||
|
};
|
||||||
|
loader.OnEventLoaded += (data) =>
|
||||||
|
{
|
||||||
|
if (data.IsSuccess)
|
||||||
|
{
|
||||||
|
Config.Logger.Log("Successfully loaded event : " + data.PluginName, typeof(ICommandAction),
|
||||||
|
LogType.INFO
|
||||||
|
);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Config.Logger.Log("Failed to load event : " + data.PluginName + " because " + data.ErrorMessage,
|
||||||
|
typeof(ICommandAction), LogType.ERROR
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
Console.ForegroundColor = cc;
|
||||||
|
};
|
||||||
|
|
||||||
|
loader.OnSlashCommandLoaded += (data) =>
|
||||||
|
{
|
||||||
|
if (data.IsSuccess)
|
||||||
|
{
|
||||||
|
Config.Logger.Log("Successfully loaded slash command : " + data.PluginName, typeof(ICommandAction),
|
||||||
|
LogType.INFO
|
||||||
|
);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Config.Logger.Log("Failed to load slash command : " + data.PluginName + " because " + data.ErrorMessage,
|
||||||
|
typeof(ICommandAction), LogType.ERROR
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
Console.ForegroundColor = cc;
|
||||||
|
};
|
||||||
|
|
||||||
|
await loader.LoadPlugins();
|
||||||
|
Console.ForegroundColor = cc;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
45
DiscordBot/Bot/Actions/Extra/SettingsConfigExtra.cs
Normal file
45
DiscordBot/Bot/Actions/Extra/SettingsConfigExtra.cs
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
using System.Linq;
|
||||||
|
using PluginManager;
|
||||||
|
using PluginManager.Loaders;
|
||||||
|
|
||||||
|
namespace DiscordBot.Bot.Actions.Extra;
|
||||||
|
|
||||||
|
internal static class SettingsConfigExtra
|
||||||
|
{
|
||||||
|
|
||||||
|
internal static void SetSettings(string key, params string[] value)
|
||||||
|
{
|
||||||
|
if (key is null) return;
|
||||||
|
|
||||||
|
if (value is null) return;
|
||||||
|
|
||||||
|
if (!Config.AppSettings.ContainsKey(key))
|
||||||
|
return;
|
||||||
|
|
||||||
|
Config.AppSettings[key] = string.Join(' ', value);
|
||||||
|
// Config.AppSettings.SaveToFile().Wait();
|
||||||
|
}
|
||||||
|
|
||||||
|
internal static void RemoveSettings(string key)
|
||||||
|
{
|
||||||
|
if (key is null) return;
|
||||||
|
|
||||||
|
if (!Config.AppSettings.ContainsKey(key))
|
||||||
|
return;
|
||||||
|
|
||||||
|
Config.AppSettings.Remove(key);
|
||||||
|
}
|
||||||
|
|
||||||
|
internal static void AddSettings(string key, params string[] value)
|
||||||
|
{
|
||||||
|
if (key is null) return;
|
||||||
|
|
||||||
|
if (value is null) return;
|
||||||
|
|
||||||
|
if (Config.AppSettings.ContainsKey(key))
|
||||||
|
return;
|
||||||
|
|
||||||
|
Config.AppSettings.Add(key, string.Join(' ', value));
|
||||||
|
// Config.AppSettings.SaveToFile().Wait();
|
||||||
|
}
|
||||||
|
}
|
||||||
84
DiscordBot/Bot/Actions/Help.cs
Normal file
84
DiscordBot/Bot/Actions/Help.cs
Normal file
@@ -0,0 +1,84 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using DiscordBot.Utilities;
|
||||||
|
using PluginManager.Interfaces;
|
||||||
|
using PluginManager.Others;
|
||||||
|
using PluginManager.Others.Actions;
|
||||||
|
using Spectre.Console;
|
||||||
|
|
||||||
|
namespace DiscordBot.Bot.Actions;
|
||||||
|
|
||||||
|
public class Help: ICommandAction
|
||||||
|
{
|
||||||
|
public string ActionName => "help";
|
||||||
|
|
||||||
|
public string Description => "Shows the list of commands and their usage";
|
||||||
|
|
||||||
|
public string Usage => "help <command?>";
|
||||||
|
|
||||||
|
public IEnumerable<InternalActionOption> ListOfOptions => [];
|
||||||
|
|
||||||
|
public InternalActionRunType RunType => InternalActionRunType.ON_CALL;
|
||||||
|
|
||||||
|
public async Task Execute(string[] args)
|
||||||
|
{
|
||||||
|
TableData tableData = new TableData();
|
||||||
|
if (args == null || args.Length == 0)
|
||||||
|
{
|
||||||
|
|
||||||
|
tableData.Columns = ["Command", "Usage", "Description", "Options"];
|
||||||
|
|
||||||
|
foreach (var a in Program.internalActionManager.Actions)
|
||||||
|
{
|
||||||
|
Markup actionName = new Markup($"[bold]{a.Key}[/]");
|
||||||
|
Markup usage = new Markup($"[italic]{a.Value.Usage}[/]");
|
||||||
|
Markup description = new Markup($"[dim]{a.Value.Description}[/]");
|
||||||
|
|
||||||
|
if (a.Value.ListOfOptions.Any())
|
||||||
|
{
|
||||||
|
|
||||||
|
var optionsTable = new Table();
|
||||||
|
optionsTable.AddColumn("Option");
|
||||||
|
optionsTable.AddColumn("Description");
|
||||||
|
|
||||||
|
foreach (var option in a.Value.ListOfOptions)
|
||||||
|
{
|
||||||
|
|
||||||
|
optionsTable.AddRow(option.OptionName, option.OptionDescription);
|
||||||
|
}
|
||||||
|
|
||||||
|
tableData.AddRow([actionName, usage, description, optionsTable]);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
tableData.AddRow([actionName, usage, description]);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// render the table
|
||||||
|
tableData.HasRoundBorders = true;
|
||||||
|
tableData.DisplayLinesBetweenRows = true;
|
||||||
|
tableData.PrintTable();
|
||||||
|
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!Program.internalActionManager.Actions.ContainsKey(args[0]))
|
||||||
|
{
|
||||||
|
Console.WriteLine("Command not found");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var action = Program.internalActionManager.Actions[args[0]];
|
||||||
|
tableData.Columns = ["Command", "Usage", "Description"];
|
||||||
|
tableData.AddRow([action.ActionName, action.Usage, action.Description]);
|
||||||
|
|
||||||
|
|
||||||
|
tableData.PrintTable();
|
||||||
|
}
|
||||||
|
}
|
||||||
95
DiscordBot/Bot/Actions/Plugin.cs
Normal file
95
DiscordBot/Bot/Actions/Plugin.cs
Normal file
@@ -0,0 +1,95 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using DiscordBot.Bot.Actions.Extra;
|
||||||
|
using PluginManager;
|
||||||
|
using PluginManager.Interfaces;
|
||||||
|
using PluginManager.Others;
|
||||||
|
using PluginManager.Others.Actions;
|
||||||
|
|
||||||
|
namespace DiscordBot.Bot.Actions;
|
||||||
|
|
||||||
|
public class Plugin: ICommandAction
|
||||||
|
{
|
||||||
|
private bool pluginsLoaded;
|
||||||
|
public string ActionName => "plugin";
|
||||||
|
public string Description => "Manages plugins. Use plugin help for more info.";
|
||||||
|
public string Usage => "plugin <option!>";
|
||||||
|
|
||||||
|
public IEnumerable<InternalActionOption> ListOfOptions => new List<InternalActionOption>
|
||||||
|
{
|
||||||
|
new InternalActionOption("help", "Displays this message"),
|
||||||
|
new InternalActionOption("list", "Lists all plugins"),
|
||||||
|
new InternalActionOption("load", "Loads all plugins"),
|
||||||
|
new InternalActionOption("install", "Installs a plugin"),
|
||||||
|
new InternalActionOption("refresh", "Refreshes the plugin list"),
|
||||||
|
new InternalActionOption("uninstall", "Uninstalls a plugin")
|
||||||
|
};
|
||||||
|
|
||||||
|
public InternalActionRunType RunType => InternalActionRunType.ON_CALL;
|
||||||
|
|
||||||
|
public async Task Execute(string[] args)
|
||||||
|
{
|
||||||
|
if (args is null || args.Length == 0 || args[0] == "help")
|
||||||
|
{
|
||||||
|
Console.WriteLine("Usage : plugin [help|list|load|install]");
|
||||||
|
Console.WriteLine("help : Displays this message");
|
||||||
|
Console.WriteLine("list : Lists all plugins");
|
||||||
|
Console.WriteLine("load : Loads all plugins");
|
||||||
|
Console.WriteLine("install : Installs a plugin");
|
||||||
|
Console.WriteLine("refresh : Refreshes the plugin list");
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (args[0])
|
||||||
|
{
|
||||||
|
case "refresh":
|
||||||
|
await PluginMethods.RefreshPlugins(true);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "uninstall":
|
||||||
|
string plugName = string.Join(' ', args, 1, args.Length-1);
|
||||||
|
bool result = await Config.PluginsManager.MarkPluginToUninstall(plugName);
|
||||||
|
if(result)
|
||||||
|
Console.WriteLine($"Marked to uninstall plugin {plugName}. Please restart the bot");
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "list":
|
||||||
|
await PluginMethods.List(Config.PluginsManager);
|
||||||
|
break;
|
||||||
|
case "load":
|
||||||
|
if (pluginsLoaded)
|
||||||
|
{
|
||||||
|
Config.Logger.Log("Plugins already loaded", typeof(ICommandAction), LogType.WARNING);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Config.DiscordBot is null)
|
||||||
|
{
|
||||||
|
Config.Logger.Log("DiscordBot is null", typeof(ICommandAction), LogType.WARNING);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
pluginsLoaded = await PluginMethods.LoadPlugins(args);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "install":
|
||||||
|
var pluginName = string.Join(' ', args, 1, args.Length - 1);
|
||||||
|
if (string.IsNullOrEmpty(pluginName) || pluginName.Length < 2)
|
||||||
|
{
|
||||||
|
Console.WriteLine("Please specify a plugin name");
|
||||||
|
Console.Write("Plugin name : ");
|
||||||
|
pluginName = Console.ReadLine();
|
||||||
|
if (string.IsNullOrEmpty(pluginName) || pluginName.Length < 2)
|
||||||
|
{
|
||||||
|
Console.WriteLine("Invalid plugin name");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
await PluginMethods.DownloadPlugin(Config.PluginsManager, pluginName);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
76
DiscordBot/Bot/Actions/SettingsConfig.cs
Normal file
76
DiscordBot/Bot/Actions/SettingsConfig.cs
Normal file
@@ -0,0 +1,76 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using DiscordBot.Bot.Actions.Extra;
|
||||||
|
using PluginManager;
|
||||||
|
using PluginManager.Interfaces;
|
||||||
|
using PluginManager.Others;
|
||||||
|
using PluginManager.Others.Actions;
|
||||||
|
|
||||||
|
namespace DiscordBot.Bot.Actions;
|
||||||
|
|
||||||
|
public class SettingsConfig: ICommandAction
|
||||||
|
{
|
||||||
|
public string ActionName => "config";
|
||||||
|
public string Description => "Change the settings of the bot";
|
||||||
|
public string Usage => "config <options!>";
|
||||||
|
public IEnumerable<InternalActionOption> ListOfOptions => new List<InternalActionOption>
|
||||||
|
{
|
||||||
|
new InternalActionOption("help", "Displays this message"),
|
||||||
|
new InternalActionOption("set", "Set a setting"),
|
||||||
|
new InternalActionOption("remove", "Remove a setting"),
|
||||||
|
new InternalActionOption("add", "Add a setting")
|
||||||
|
};
|
||||||
|
public InternalActionRunType RunType => InternalActionRunType.ON_CALL;
|
||||||
|
public Task Execute(string[] args)
|
||||||
|
{
|
||||||
|
if (args is null)
|
||||||
|
{
|
||||||
|
foreach (var settings in Config.AppSettings)
|
||||||
|
Console.WriteLine(settings.Key + ": " + settings.Value);
|
||||||
|
|
||||||
|
return Task.CompletedTask;
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (args[0])
|
||||||
|
{
|
||||||
|
case "-s":
|
||||||
|
case "set":
|
||||||
|
if (args.Length < 3)
|
||||||
|
return Task.CompletedTask;
|
||||||
|
SettingsConfigExtra.SetSettings(args[1], args[2..]);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "-r":
|
||||||
|
case "remove":
|
||||||
|
if (args.Length < 2)
|
||||||
|
return Task.CompletedTask;
|
||||||
|
SettingsConfigExtra.RemoveSettings(args[1]);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "-a":
|
||||||
|
case "add":
|
||||||
|
if (args.Length < 3)
|
||||||
|
return Task.CompletedTask;
|
||||||
|
SettingsConfigExtra.AddSettings(args[1], args[2..]);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "-h":
|
||||||
|
case "-help":
|
||||||
|
Console.WriteLine("Options:");
|
||||||
|
Console.WriteLine("-s <settingName> <newValue>: Set a setting");
|
||||||
|
Console.WriteLine("-r <settingName>: Remove a setting");
|
||||||
|
Console.WriteLine("-a <settingName> <newValue>: Add a setting");
|
||||||
|
Console.WriteLine("-h: Show this help message");
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
Console.WriteLine("Invalid option");
|
||||||
|
return Task.CompletedTask;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
return Task.CompletedTask;
|
||||||
|
}
|
||||||
|
}
|
||||||
90
DiscordBot/Bot/Commands/NormalCommands/Help.cs
Normal file
90
DiscordBot/Bot/Commands/NormalCommands/Help.cs
Normal file
@@ -0,0 +1,90 @@
|
|||||||
|
using System.Collections.Generic;
|
||||||
|
using Discord;
|
||||||
|
using PluginManager;
|
||||||
|
using PluginManager.Interfaces;
|
||||||
|
using PluginManager.Loaders;
|
||||||
|
using PluginManager.Others;
|
||||||
|
|
||||||
|
namespace DiscordBot.Bot.Commands;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The help command
|
||||||
|
/// </summary>
|
||||||
|
internal class Help: DBCommand
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Command name
|
||||||
|
/// </summary>
|
||||||
|
public string Command => "help";
|
||||||
|
|
||||||
|
public List<string> Aliases => null;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Command Description
|
||||||
|
/// </summary>
|
||||||
|
public string Description => "This command allows you to check all loaded commands";
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Command usage
|
||||||
|
/// </summary>
|
||||||
|
public string Usage => "help <command>";
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Check if the command require administrator to be executed
|
||||||
|
/// </summary>
|
||||||
|
public bool requireAdmin => false;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The main body of the command
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="context">The command context</param>
|
||||||
|
public void ExecuteServer(DbCommandExecutingArguments args)
|
||||||
|
{
|
||||||
|
if (args.arguments is not null)
|
||||||
|
{
|
||||||
|
var e = GenerateHelpCommand(args.arguments[0]);
|
||||||
|
if (e is null)
|
||||||
|
args.context.Channel.SendMessageAsync("Unknown Command " + args.arguments[0]);
|
||||||
|
else
|
||||||
|
args.context.Channel.SendMessageAsync(embed: e.Build());
|
||||||
|
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var embedBuilder = new EmbedBuilder();
|
||||||
|
|
||||||
|
var adminCommands = "";
|
||||||
|
var normalCommands = "";
|
||||||
|
|
||||||
|
foreach (var cmd in PluginLoader.Commands)
|
||||||
|
if (cmd.requireAdmin)
|
||||||
|
adminCommands += cmd.Command + " ";
|
||||||
|
else
|
||||||
|
normalCommands += cmd.Command + " ";
|
||||||
|
|
||||||
|
|
||||||
|
if (adminCommands.Length > 0)
|
||||||
|
embedBuilder.AddField("Admin Commands", adminCommands);
|
||||||
|
if (normalCommands.Length > 0)
|
||||||
|
embedBuilder.AddField("Normal Commands", normalCommands);
|
||||||
|
args.context.Channel.SendMessageAsync(embed: embedBuilder.Build());
|
||||||
|
}
|
||||||
|
|
||||||
|
private EmbedBuilder GenerateHelpCommand(string command)
|
||||||
|
{
|
||||||
|
var embedBuilder = new EmbedBuilder();
|
||||||
|
var cmd = PluginLoader.Commands.Find(p => p.Command == command ||
|
||||||
|
p.Aliases is not null && p.Aliases.Contains(command)
|
||||||
|
);
|
||||||
|
if (cmd == null) return null;
|
||||||
|
|
||||||
|
embedBuilder.AddField("Usage", Config.AppSettings["prefix"] + cmd.Usage);
|
||||||
|
embedBuilder.AddField("Description", cmd.Description);
|
||||||
|
if (cmd.Aliases is null)
|
||||||
|
return embedBuilder;
|
||||||
|
embedBuilder.AddField("Alias", cmd.Aliases.Count == 0 ? "-" : string.Join(", ", cmd.Aliases));
|
||||||
|
|
||||||
|
return embedBuilder;
|
||||||
|
}
|
||||||
|
}
|
||||||
59
DiscordBot/Bot/Commands/SlashCommands/Help.cs
Normal file
59
DiscordBot/Bot/Commands/SlashCommands/Help.cs
Normal file
@@ -0,0 +1,59 @@
|
|||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using Discord;
|
||||||
|
using Discord.WebSocket;
|
||||||
|
using PluginManager.Interfaces;
|
||||||
|
using PluginManager.Loaders;
|
||||||
|
using PluginManager.Others;
|
||||||
|
|
||||||
|
namespace DiscordBot.Bot.Commands.SlashCommands;
|
||||||
|
|
||||||
|
public class Help: DBSlashCommand
|
||||||
|
{
|
||||||
|
public string Name => "help";
|
||||||
|
public string Description => "This command allows you to check all loaded commands";
|
||||||
|
public bool canUseDM => true;
|
||||||
|
|
||||||
|
public bool HasInteraction => false;
|
||||||
|
|
||||||
|
public List<SlashCommandOptionBuilder> Options =>
|
||||||
|
new()
|
||||||
|
{
|
||||||
|
new SlashCommandOptionBuilder()
|
||||||
|
.WithName("command")
|
||||||
|
.WithDescription("The command you want to get help for")
|
||||||
|
.WithRequired(false)
|
||||||
|
.WithType(ApplicationCommandOptionType.String)
|
||||||
|
};
|
||||||
|
|
||||||
|
public async void ExecuteServer(SocketSlashCommand context)
|
||||||
|
{
|
||||||
|
EmbedBuilder embedBuilder = new();
|
||||||
|
|
||||||
|
embedBuilder.WithTitle("Help Command");
|
||||||
|
embedBuilder.WithColor(Functions.RandomColor);
|
||||||
|
var slashCommands = PluginLoader.SlashCommands;
|
||||||
|
var options = context.Data.Options;
|
||||||
|
|
||||||
|
//Console.WriteLine("Options: " + options.Count);
|
||||||
|
if (options is null || options.Count == 0)
|
||||||
|
foreach (var slashCommand in slashCommands)
|
||||||
|
embedBuilder.AddField(slashCommand.Name, slashCommand.Description);
|
||||||
|
|
||||||
|
if (options.Count > 0)
|
||||||
|
{
|
||||||
|
var commandName = options.First().Value;
|
||||||
|
var slashCommand = slashCommands.FirstOrDefault(x => x.Name.TrimEnd() == commandName.ToString());
|
||||||
|
if (slashCommand is null)
|
||||||
|
{
|
||||||
|
await context.RespondAsync("Unknown Command " + commandName);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
embedBuilder.AddField("DM Usable:", slashCommand.canUseDM, true)
|
||||||
|
.WithDescription(slashCommand.Description);
|
||||||
|
}
|
||||||
|
|
||||||
|
await context.RespondAsync(embed: embedBuilder.Build());
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,107 +0,0 @@
|
|||||||
using Discord;
|
|
||||||
using Discord.Commands;
|
|
||||||
using Discord.WebSocket;
|
|
||||||
|
|
||||||
using PluginManager.Loaders;
|
|
||||||
using PluginManager.Interfaces;
|
|
||||||
using PluginManager.Others.Permissions;
|
|
||||||
using PluginManager.Others;
|
|
||||||
|
|
||||||
using System.Collections.Generic;
|
|
||||||
|
|
||||||
namespace DiscordBot.Discord.Commands
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// The help command
|
|
||||||
/// </summary>
|
|
||||||
internal class Help : DBCommand
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Command name
|
|
||||||
/// </summary>
|
|
||||||
public string Command => "help";
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Command Description
|
|
||||||
/// </summary>
|
|
||||||
public string Description => "This command allows you to check all loadded commands";
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Command usage
|
|
||||||
/// </summary>
|
|
||||||
public string Usage => "help";
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Check if the command can be used <inheritdoca DM <see cref="IChannel"/>/>
|
|
||||||
/// </summary>
|
|
||||||
public bool canUseDM => true;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Check if the command can be used in a server
|
|
||||||
/// </summary>
|
|
||||||
public bool canUseServer => true;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Check if the command require administrator to be executed
|
|
||||||
/// </summary>
|
|
||||||
public bool requireAdmin => false;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// The main body of the command
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="context">The command context</param>
|
|
||||||
/// <param name="message">The command message</param>
|
|
||||||
/// <param name="client">The discord bot client</param>
|
|
||||||
/// <param name="isDM">True if the message was sent from a DM channel, false otherwise</param>
|
|
||||||
public void Execute(SocketCommandContext context, SocketMessage message, DiscordSocketClient client, bool isDM)
|
|
||||||
{
|
|
||||||
List<string> args = Functions.GetArguments(message);
|
|
||||||
if (args.Count != 0)
|
|
||||||
{
|
|
||||||
|
|
||||||
foreach (var item in args)
|
|
||||||
{
|
|
||||||
var e = GenerateHelpCommand(item);
|
|
||||||
if (e != null)
|
|
||||||
context.Channel.SendMessageAsync(embed: e.Build());
|
|
||||||
else
|
|
||||||
context.Channel.SendMessageAsync("Unknown Command " + item);
|
|
||||||
}
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
EmbedBuilder embedBuilder = new EmbedBuilder();
|
|
||||||
|
|
||||||
string adminCommands = "";
|
|
||||||
string normalCommands = "";
|
|
||||||
string DMCommands = "";
|
|
||||||
|
|
||||||
foreach (var cmd in PluginLoader.Plugins!)
|
|
||||||
{
|
|
||||||
if (cmd.canUseDM)
|
|
||||||
DMCommands += cmd.Command + " ";
|
|
||||||
if (cmd.requireAdmin)
|
|
||||||
adminCommands += cmd.Command + " ";
|
|
||||||
else if (cmd.canUseServer) normalCommands += cmd.Command + " ";
|
|
||||||
}
|
|
||||||
|
|
||||||
embedBuilder.AddField("Admin Commands", adminCommands);
|
|
||||||
embedBuilder.AddField("Normal Commands", normalCommands);
|
|
||||||
embedBuilder.AddField("DM Commands", DMCommands);
|
|
||||||
context.Channel.SendMessageAsync(embed: embedBuilder.Build());
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
private EmbedBuilder GenerateHelpCommand(string command)
|
|
||||||
{
|
|
||||||
EmbedBuilder embedBuilder = new EmbedBuilder();
|
|
||||||
DBCommand cmd = PluginLoader.Plugins.Find(p => p.Command == command);
|
|
||||||
if (cmd == null)
|
|
||||||
return null;
|
|
||||||
|
|
||||||
embedBuilder.AddField("Usage", cmd.Usage);
|
|
||||||
embedBuilder.AddField("Description", cmd.Description);
|
|
||||||
|
|
||||||
return embedBuilder;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,114 +0,0 @@
|
|||||||
using System;
|
|
||||||
using System.Diagnostics;
|
|
||||||
|
|
||||||
using Discord.WebSocket;
|
|
||||||
using DiscordLibCommands = Discord.Commands;
|
|
||||||
using DiscordLib = Discord;
|
|
||||||
|
|
||||||
using PluginManager.Interfaces;
|
|
||||||
using PluginManager.Others.Permissions;
|
|
||||||
using PluginManager.Others;
|
|
||||||
|
|
||||||
namespace DiscordBot.Discord.Commands
|
|
||||||
{
|
|
||||||
internal class Restart : DBCommand
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Command name
|
|
||||||
/// </summary>
|
|
||||||
public string Command => "restart";
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Command Description
|
|
||||||
/// </summary>
|
|
||||||
public string Description => "Restart the bot";
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Command usage
|
|
||||||
/// </summary>
|
|
||||||
public string Usage => "restart [-p | -c | -args | -cmd] <args>";
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Check if the command can be used <inheritdoca DM <see cref="IChannel"/>/>
|
|
||||||
/// </summary>
|
|
||||||
public bool canUseDM => false;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Check if the command can be used in a server
|
|
||||||
/// </summary>
|
|
||||||
public bool canUseServer => true;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Check if the command require administrator to be executed
|
|
||||||
/// </summary>
|
|
||||||
public bool requireAdmin => false;
|
|
||||||
/// <summary>
|
|
||||||
/// The main body of the command
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="context">The command context</param>
|
|
||||||
/// <param name="message">The command message</param>
|
|
||||||
/// <param name="client">The discord bot client</param>
|
|
||||||
/// <param name="isDM">True if the message was sent from a DM channel, false otherwise</param>
|
|
||||||
public async void Execute(DiscordLibCommands.SocketCommandContext context, SocketMessage message, DiscordSocketClient client, bool isDM)
|
|
||||||
{
|
|
||||||
if (!DiscordPermissions.hasPermission(message.Author as SocketGuildUser, DiscordLib.GuildPermission.Administrator)) return;
|
|
||||||
var args = Functions.GetArguments(message);
|
|
||||||
var OS = Functions.GetOperatingSystem();
|
|
||||||
if (args.Count == 0)
|
|
||||||
{
|
|
||||||
switch (OS)
|
|
||||||
{
|
|
||||||
case PluginManager.Others.OperatingSystem.WINDOWS:
|
|
||||||
Process.Start("./DiscordBot.exe");
|
|
||||||
break;
|
|
||||||
case PluginManager.Others.OperatingSystem.LINUX:
|
|
||||||
case PluginManager.Others.OperatingSystem.MAC_OS:
|
|
||||||
Process.Start("./DiscordBot");
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
switch (args[0])
|
|
||||||
{
|
|
||||||
case "-p":
|
|
||||||
case "-poweroff":
|
|
||||||
case "-c":
|
|
||||||
case "-close":
|
|
||||||
Environment.Exit(0);
|
|
||||||
break;
|
|
||||||
case "-cmd":
|
|
||||||
case "-args":
|
|
||||||
string cmd = "--args";
|
|
||||||
|
|
||||||
if (args.Count > 1)
|
|
||||||
for (int i = 1; i < args.Count; i++)
|
|
||||||
cmd += $" {args[i]}";
|
|
||||||
|
|
||||||
|
|
||||||
switch (OS)
|
|
||||||
{
|
|
||||||
case PluginManager.Others.OperatingSystem.WINDOWS:
|
|
||||||
Functions.WriteLogFile("Restarting the bot with the following arguments: \"" + cmd + "\"");
|
|
||||||
Process.Start("./DiscordBot.exe", cmd);
|
|
||||||
break;
|
|
||||||
case PluginManager.Others.OperatingSystem.LINUX:
|
|
||||||
//case PluginManager.Others.OperatingSystem.MAC_OS: ?? - not tested
|
|
||||||
Process.Start("./DiscordBot", cmd);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
Environment.Exit(0);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
await context.Channel.SendMessageAsync("Invalid argument. Use `help restart` to see the usage.");
|
|
||||||
break;
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,106 +0,0 @@
|
|||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
using Discord;
|
|
||||||
using Discord.Commands;
|
|
||||||
using Discord.WebSocket;
|
|
||||||
|
|
||||||
using PluginManager.Core;
|
|
||||||
using PluginManager.Interfaces;
|
|
||||||
using PluginManager.Others;
|
|
||||||
using PluginManager.Others.Permissions;
|
|
||||||
|
|
||||||
namespace DiscordBot.Discord.Commands
|
|
||||||
{
|
|
||||||
class Settings : DBCommand
|
|
||||||
{
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Command name
|
|
||||||
/// </summary>
|
|
||||||
public string Command => "set";
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Command Description
|
|
||||||
/// </summary>
|
|
||||||
public string Description => "This command allows you change all settings. Use \"set help\" to show details";
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Command usage
|
|
||||||
/// </summary>
|
|
||||||
public string Usage => "set [keyword] [new Value]";
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Check if the command can be used <inheritdoca DM <see cref="IChannel"/>/>
|
|
||||||
/// </summary>
|
|
||||||
public bool canUseDM => true;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Check if the command can be used in a server
|
|
||||||
/// </summary>
|
|
||||||
public bool canUseServer => true;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Check if the command require administrator to be executed
|
|
||||||
/// </summary>
|
|
||||||
public bool requireAdmin => true;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// The main body of the command
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="context">The command context</param>
|
|
||||||
/// <param name="message">The command message</param>
|
|
||||||
/// <param name="client">The discord bot client</param>
|
|
||||||
/// <param name="isDM">True if the message was sent from a DM channel, false otherwise</param>
|
|
||||||
public async void Execute(SocketCommandContext context, SocketMessage message, DiscordSocketClient client, bool isDM)
|
|
||||||
{
|
|
||||||
var channel = message.Channel;
|
|
||||||
try
|
|
||||||
{
|
|
||||||
|
|
||||||
string content = message.Content;
|
|
||||||
string[] data = content.Split(' ');
|
|
||||||
string keyword = data[1];
|
|
||||||
if (keyword.ToLower() == "help")
|
|
||||||
{
|
|
||||||
await channel.SendMessageAsync("set token [new value] -- set the value of the new token (require restart)");
|
|
||||||
await channel.SendMessageAsync("set prefix [new value] -- set the value of the new preifx (require restart)");
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
switch (keyword.ToLower())
|
|
||||||
{
|
|
||||||
case "token":
|
|
||||||
if (data.Length != 3)
|
|
||||||
{
|
|
||||||
await channel.SendMessageAsync("Invalid token !");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
Functions.WriteToSettings("./Data/Resources/DiscordBotCore.data", "BOT_TOKEN", data[2], '\t');
|
|
||||||
break;
|
|
||||||
case "prefix":
|
|
||||||
if (data.Length != 3)
|
|
||||||
{
|
|
||||||
await channel.SendMessageAsync("Invalid token !");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
Functions.WriteToSettings("./Data/Resources/DiscordBotCore.data", "BOT_PREFIX", data[2], '\t');
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
await channel.SendMessageAsync("Restart required ...");
|
|
||||||
}
|
|
||||||
catch
|
|
||||||
{
|
|
||||||
await channel.SendMessageAsync("Unknown usage to this command !\nUsage: " + Usage);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,152 +0,0 @@
|
|||||||
using Discord;
|
|
||||||
using Discord.Commands;
|
|
||||||
using Discord.WebSocket;
|
|
||||||
|
|
||||||
using System;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
using static PluginManager.Others.Functions;
|
|
||||||
|
|
||||||
namespace PluginManager.Core
|
|
||||||
{
|
|
||||||
internal class Boot
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// The bot prefix
|
|
||||||
/// </summary>
|
|
||||||
public readonly string botPrefix;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// The bot token
|
|
||||||
/// </summary>
|
|
||||||
public readonly string botToken;
|
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Checks if the bot is ready
|
|
||||||
/// </summary>
|
|
||||||
/// <value> true if the bot is ready, othwerwise false </value>
|
|
||||||
public bool isReady { get; private set; } = false;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// The bot client
|
|
||||||
/// </summary>
|
|
||||||
public DiscordSocketClient client;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// The bot command handler
|
|
||||||
/// </summary>
|
|
||||||
private CommandHandler commandServiceHandler;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// The command service
|
|
||||||
/// </summary>
|
|
||||||
private CommandService service;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// The main Boot constructor
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="botToken">The bot token</param>
|
|
||||||
/// <param name="botPrefix">The bot prefix</param>
|
|
||||||
public Boot(string botToken, string botPrefix)
|
|
||||||
{
|
|
||||||
this.botPrefix = botPrefix;
|
|
||||||
this.botToken = botToken;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// The start method for the bot. This method is used to load the bot
|
|
||||||
/// </summary>
|
|
||||||
/// <returns>Task</returns>
|
|
||||||
public async Task Awake()
|
|
||||||
{
|
|
||||||
client = new DiscordSocketClient();
|
|
||||||
service = new CommandService();
|
|
||||||
|
|
||||||
CommonTasks();
|
|
||||||
|
|
||||||
await client.LoginAsync(TokenType.Bot, botToken);
|
|
||||||
await client.StartAsync();
|
|
||||||
|
|
||||||
commandServiceHandler = new CommandHandler(client, service, botPrefix);
|
|
||||||
await commandServiceHandler.InstallCommandsAsync();
|
|
||||||
|
|
||||||
//wait for isReady to become true
|
|
||||||
|
|
||||||
await Task.Delay(2000);
|
|
||||||
while (!isReady) ;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// The method that stops the bot from running
|
|
||||||
/// </summary>
|
|
||||||
/// <returns></returns>
|
|
||||||
public async Task ShutDown()
|
|
||||||
{
|
|
||||||
if (client == null) return;
|
|
||||||
await client.LogoutAsync();
|
|
||||||
await client.StopAsync();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void CommonTasks()
|
|
||||||
{
|
|
||||||
if (client == null) return;
|
|
||||||
client.LoggedOut += Client_LoggedOut;
|
|
||||||
client.Log += Log;
|
|
||||||
client.LoggedIn += LoggedIn;
|
|
||||||
client.Ready += Ready;
|
|
||||||
}
|
|
||||||
|
|
||||||
private Task Client_LoggedOut()
|
|
||||||
{
|
|
||||||
WriteLogFile("Successfully Logged Out");
|
|
||||||
Log(new LogMessage(LogSeverity.Info, "Boot", "Successfully logged out from discord !"));
|
|
||||||
return Task.CompletedTask;
|
|
||||||
}
|
|
||||||
|
|
||||||
private Task Ready()
|
|
||||||
{
|
|
||||||
Console.Title = "ONLINE";
|
|
||||||
isReady = true;
|
|
||||||
return Task.CompletedTask;
|
|
||||||
}
|
|
||||||
|
|
||||||
private Task LoggedIn()
|
|
||||||
{
|
|
||||||
Console.Title = "CONNECTED";
|
|
||||||
WriteLogFile("The bot has been logged in at " + DateTime.Now.ToShortDateString() + " (" +
|
|
||||||
DateTime.Now.ToShortTimeString() + ")");
|
|
||||||
return Task.CompletedTask;
|
|
||||||
}
|
|
||||||
|
|
||||||
private Task Log(LogMessage message)
|
|
||||||
{
|
|
||||||
switch (message.Severity)
|
|
||||||
{
|
|
||||||
case LogSeverity.Error:
|
|
||||||
case LogSeverity.Critical:
|
|
||||||
WriteErrFile(message.Message);
|
|
||||||
|
|
||||||
Console.ForegroundColor = ConsoleColor.Red;
|
|
||||||
Console.WriteLine("[ERROR] " + message.Message);
|
|
||||||
Console.ForegroundColor = ConsoleColor.White;
|
|
||||||
|
|
||||||
break;
|
|
||||||
|
|
||||||
case LogSeverity.Info:
|
|
||||||
case LogSeverity.Debug:
|
|
||||||
WriteLogFile(message.Message);
|
|
||||||
|
|
||||||
Console.ForegroundColor = ConsoleColor.Cyan;
|
|
||||||
Console.WriteLine("[INFO] " + message.Message);
|
|
||||||
Console.ForegroundColor = ConsoleColor.White;
|
|
||||||
|
|
||||||
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
return Task.CompletedTask;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,136 +0,0 @@
|
|||||||
using Discord.Commands;
|
|
||||||
using Discord.WebSocket;
|
|
||||||
|
|
||||||
using PluginManager.Interfaces;
|
|
||||||
|
|
||||||
using System.Reflection;
|
|
||||||
using PluginManager.Others;
|
|
||||||
using PluginManager.Others.Permissions;
|
|
||||||
using PluginManager.Loaders;
|
|
||||||
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
using System.Linq;
|
|
||||||
using Discord;
|
|
||||||
using System;
|
|
||||||
|
|
||||||
namespace PluginManager.Core
|
|
||||||
{
|
|
||||||
internal class CommandHandler
|
|
||||||
{
|
|
||||||
private readonly DiscordSocketClient client;
|
|
||||||
private readonly CommandService commandService;
|
|
||||||
private readonly string botPrefix;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Command handler constructor
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="client">The discord bot client</param>
|
|
||||||
/// <param name="commandService">The discord bot command service</param>
|
|
||||||
/// <param name="botPrefix">The prefix to watch for</param>
|
|
||||||
public CommandHandler(DiscordSocketClient client, CommandService commandService, string botPrefix)
|
|
||||||
{
|
|
||||||
this.client = client;
|
|
||||||
this.commandService = commandService;
|
|
||||||
this.botPrefix = botPrefix;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// The method to initialize all commands
|
|
||||||
/// </summary>
|
|
||||||
/// <returns></returns>
|
|
||||||
public async Task InstallCommandsAsync()
|
|
||||||
{
|
|
||||||
client.MessageReceived += MessageHandler;
|
|
||||||
await commandService.AddModulesAsync(assembly: Assembly.GetEntryAssembly(), services: null);
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// The message handler for the bot
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="Message">The message got from the user in discord chat</param>
|
|
||||||
/// <returns></returns>
|
|
||||||
private async Task MessageHandler(SocketMessage Message)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
if (Message as SocketUserMessage == null)
|
|
||||||
return;
|
|
||||||
|
|
||||||
var message = Message as SocketUserMessage;
|
|
||||||
|
|
||||||
if (message == null) return;
|
|
||||||
|
|
||||||
if (!message.Content.StartsWith(botPrefix)) return;
|
|
||||||
|
|
||||||
int argPos = 0;
|
|
||||||
|
|
||||||
if (message.HasMentionPrefix(client.CurrentUser, ref argPos))
|
|
||||||
{
|
|
||||||
await message.Channel.SendMessageAsync("Can not exec mentioned commands !");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (message.Author.IsBot) return;
|
|
||||||
|
|
||||||
var context = new SocketCommandContext(client, message);
|
|
||||||
|
|
||||||
await commandService.ExecuteAsync(
|
|
||||||
context: context,
|
|
||||||
argPos: argPos,
|
|
||||||
services: null
|
|
||||||
);
|
|
||||||
|
|
||||||
DBCommand plugin = PluginLoader.Plugins!.Where(p => p.Command == (message.Content.Split(' ')[0]).Substring(botPrefix.Length)).FirstOrDefault();
|
|
||||||
|
|
||||||
|
|
||||||
if (plugin != null)
|
|
||||||
{
|
|
||||||
if (message.Channel == await message.Author.CreateDMChannelAsync())
|
|
||||||
{
|
|
||||||
if (plugin.canUseDM)
|
|
||||||
{
|
|
||||||
if (plugin.requireAdmin)
|
|
||||||
{
|
|
||||||
if (message.Author.isAdmin())
|
|
||||||
{
|
|
||||||
plugin.Execute(context, message, client, true);
|
|
||||||
Functions.WriteLogFile($"[{message.Author.Id}] Executed command (DM) : " + plugin.Command);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
await message.Channel.SendMessageAsync("This command is for administrators only !");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
plugin.Execute(context, message, client, true);
|
|
||||||
Functions.WriteLogFile($"[{message.Author.Id}] Executed command (DM) : " + plugin.Command);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
await message.Channel.SendMessageAsync("This command is not for DMs");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (plugin.canUseServer)
|
|
||||||
{
|
|
||||||
if (plugin.requireAdmin)
|
|
||||||
{
|
|
||||||
if (message.Author.isAdmin())
|
|
||||||
{
|
|
||||||
plugin.Execute(context, message, client, false);
|
|
||||||
Functions.WriteLogFile($"[{message.Author.Id}] Executed command : " + plugin.Command);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
await message.Channel.SendMessageAsync("This command is for administrators only !");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
plugin.Execute(context, message, client, false);
|
|
||||||
Functions.WriteLogFile($"[{message.Author.Id}] Executed command : " + plugin.Command);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
return;
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch { }
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,37 +1,43 @@
|
|||||||
<Project Sdk="Microsoft.NET.Sdk">
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
<PropertyGroup>
|
||||||
<PropertyGroup>
|
<OutputType>Exe</OutputType>
|
||||||
<OutputType>Exe</OutputType>
|
<TargetFramework>net8.0</TargetFramework>
|
||||||
<TargetFramework>net6.0</TargetFramework>
|
<Nullable>disable</Nullable>
|
||||||
<Nullable>disable</Nullable>
|
<ApplicationIcon />
|
||||||
<ApplicationIcon />
|
<StartupObject />
|
||||||
<StartupObject />
|
<SignAssembly>False</SignAssembly>
|
||||||
</PropertyGroup>
|
<IsPublishable>True</IsPublishable>
|
||||||
|
<AssemblyVersion>1.0.4.0</AssemblyVersion>
|
||||||
<ItemGroup>
|
<PublishAot>False</PublishAot>
|
||||||
<Compile Remove="Data\**" />
|
<FileVersion>1.0.4.0</FileVersion>
|
||||||
<Compile Remove="obj\**" />
|
</PropertyGroup>
|
||||||
<Compile Remove="Output\**" />
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
|
||||||
</ItemGroup>
|
<DebugType>none</DebugType>
|
||||||
|
</PropertyGroup>
|
||||||
<ItemGroup>
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
|
||||||
<EmbeddedResource Remove="Data\**" />
|
<DebugType>none</DebugType>
|
||||||
<EmbeddedResource Remove="obj\**" />
|
</PropertyGroup>
|
||||||
<EmbeddedResource Remove="Output\**" />
|
<ItemGroup>
|
||||||
</ItemGroup>
|
<Compile Remove="Data\**" />
|
||||||
|
<Compile Remove="obj\**" />
|
||||||
<ItemGroup>
|
<Compile Remove="Output\**" />
|
||||||
<None Remove="Data\**" />
|
</ItemGroup>
|
||||||
<None Remove="obj\**" />
|
<ItemGroup>
|
||||||
<None Remove="Output\**" />
|
<EmbeddedResource Remove="Data\**" />
|
||||||
</ItemGroup>
|
<EmbeddedResource Remove="obj\**" />
|
||||||
|
<EmbeddedResource Remove="Output\**" />
|
||||||
<ItemGroup>
|
</ItemGroup>
|
||||||
<PackageReference Include="Discord.Net" Version="3.6.1" />
|
<ItemGroup>
|
||||||
</ItemGroup>
|
<None Remove="Data\**" />
|
||||||
|
<None Remove="obj\**" />
|
||||||
<ItemGroup>
|
<None Remove="Output\**" />
|
||||||
<ProjectReference Include="..\PluginManager\PluginManager.csproj" />
|
<None Remove="builder.bat" />
|
||||||
</ItemGroup>
|
<None Remove="builder.sh" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<PackageReference Include="Spectre.Console" Version="0.49.1" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ProjectReference Include="..\PluginManager\PluginManager.csproj" />
|
||||||
|
</ItemGroup>
|
||||||
</Project>
|
</Project>
|
||||||
53
DiscordBot/Entry.cs
Normal file
53
DiscordBot/Entry.cs
Normal file
@@ -0,0 +1,53 @@
|
|||||||
|
using System;
|
||||||
|
using System.IO;
|
||||||
|
using System.Reflection;
|
||||||
|
|
||||||
|
|
||||||
|
namespace DiscordBot;
|
||||||
|
|
||||||
|
public static class Entry
|
||||||
|
{
|
||||||
|
private static readonly string logo = @"
|
||||||
|
_____ _ _ _____ _ _ ____ _
|
||||||
|
/ ____| | | | | | __ \(_) | | | _ \ | |
|
||||||
|
| (___ ___| |_| |__ | | | |_ ___ ___ ___ _ __ __| | | |_) | ___ | |_
|
||||||
|
\___ \ / _ \ __| '_ \ | | | | / __|/ __/ _ \| '__/ _` | | _ < / _ \| __|
|
||||||
|
____) | __/ |_| | | | | |__| | \__ \ (_| (_) | | | (_| | | |_) | (_) | |_
|
||||||
|
|_____/ \___|\__|_| |_| |_____/|_|___/\___\___/|_| \__,_| |____/ \___/ \__|
|
||||||
|
|
||||||
|
|
||||||
|
";
|
||||||
|
public static void Main(string[] args)
|
||||||
|
{
|
||||||
|
#if DEBUG
|
||||||
|
if (args.Length == 1 && args[0] == "/purge_plugins" )
|
||||||
|
{
|
||||||
|
foreach (var plugin in Directory.GetFiles("./Data/Plugins", "*.dll", SearchOption.AllDirectories))
|
||||||
|
{
|
||||||
|
File.Delete(plugin);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
Console.ForegroundColor = ConsoleColor.DarkYellow;
|
||||||
|
Console.WriteLine(logo);
|
||||||
|
Console.ResetColor();
|
||||||
|
|
||||||
|
|
||||||
|
var currentDomain = AppDomain.CurrentDomain;
|
||||||
|
currentDomain.AssemblyResolve += LoadFromSameFolder;
|
||||||
|
|
||||||
|
static Assembly LoadFromSameFolder(object sender, ResolveEventArgs args)
|
||||||
|
{
|
||||||
|
var folderPath = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)!, "./Libraries");
|
||||||
|
var assemblyPath = Path.Combine(folderPath, new AssemblyName(args.Name).Name + ".dll");
|
||||||
|
if (!File.Exists(assemblyPath)) return null;
|
||||||
|
var assembly = Assembly.LoadFrom(assemblyPath);
|
||||||
|
|
||||||
|
return assembly;
|
||||||
|
}
|
||||||
|
|
||||||
|
Program.Startup(args);
|
||||||
|
}
|
||||||
|
}
|
||||||
39
DiscordBot/Installer.cs
Normal file
39
DiscordBot/Installer.cs
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
using System;
|
||||||
|
using PluginManager;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using Spectre.Console;
|
||||||
|
|
||||||
|
namespace DiscordBot;
|
||||||
|
|
||||||
|
public static class Installer
|
||||||
|
{
|
||||||
|
private static async Task AskForConfig(string key, string message)
|
||||||
|
{
|
||||||
|
var value = AnsiConsole.Ask<string>($"[green]{message}[/]");
|
||||||
|
|
||||||
|
if (string.IsNullOrWhiteSpace(value))
|
||||||
|
{
|
||||||
|
AnsiConsole.MarkupLine($"Invalid {key} !");
|
||||||
|
|
||||||
|
Environment.Exit(-20);
|
||||||
|
}
|
||||||
|
|
||||||
|
Config.AppSettings.Add(key, value);
|
||||||
|
}
|
||||||
|
public static async Task GenerateStartupConfig()
|
||||||
|
{
|
||||||
|
|
||||||
|
if(!Config.AppSettings.ContainsKey("token"))
|
||||||
|
await AskForConfig("token", "Token:");
|
||||||
|
|
||||||
|
if(!Config.AppSettings.ContainsKey("prefix"))
|
||||||
|
await AskForConfig("prefix", "Prefix:");
|
||||||
|
|
||||||
|
if(!Config.AppSettings.ContainsKey("ServerID"))
|
||||||
|
await AskForConfig("ServerID", "Server ID:");
|
||||||
|
|
||||||
|
await Config.AppSettings.SaveToFile();
|
||||||
|
|
||||||
|
Config.Logger.Log("Config Saved", typeof(Installer));
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,540 +1,144 @@
|
|||||||
using Discord;
|
using System;
|
||||||
|
|
||||||
using System;
|
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
using PluginManager.Core;
|
|
||||||
using PluginManager.Others;
|
|
||||||
using PluginManager.Loaders;
|
|
||||||
using PluginManager.LanguageSystem;
|
|
||||||
using PluginManager.Online;
|
|
||||||
|
|
||||||
using System.Diagnostics;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
namespace DiscordBot
|
using System.Reflection;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using DiscordBot.Utilities;
|
||||||
|
using PluginManager.Bot;
|
||||||
|
using PluginManager.Others;
|
||||||
|
using PluginManager.Others.Actions;
|
||||||
|
using Spectre.Console;
|
||||||
|
using static PluginManager.Config;
|
||||||
|
|
||||||
|
namespace DiscordBot;
|
||||||
|
|
||||||
|
public class Program
|
||||||
{
|
{
|
||||||
public class Program
|
public static InternalActionManager internalActionManager;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The main entry point for the application.
|
||||||
|
/// </summary>
|
||||||
|
public static void Startup(string[] args)
|
||||||
{
|
{
|
||||||
private static PluginsManager manager = new PluginsManager("https://sethdiscordbot.000webhostapp.com/Storage/Discord%20Bot/Plugins");
|
PreLoadComponents(args).Wait();
|
||||||
private static LanguageManager languageManager = new LanguageManager("https://sethdiscordbot.000webhostapp.com/Storage/Discord%20Bot/Languages");
|
|
||||||
|
|
||||||
private static bool loadPluginsOnStartup = false;
|
if (!AppSettings.ContainsKey("ServerID") || !AppSettings.ContainsKey("token") || !AppSettings.ContainsKey("prefix"))
|
||||||
private static bool listPluginsAtStartup = false;
|
Installer.GenerateStartupConfig().Wait();
|
||||||
private static bool listLanguagAtStartup = false;
|
|
||||||
|
|
||||||
private static bool PluginsLoaded = false;
|
HandleInput().Wait();
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The main entry point for the application.
|
/// The main loop for the discord bot
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[STAThread]
|
private static void NoGUI()
|
||||||
[Obsolete]
|
{
|
||||||
|
internalActionManager.Initialize().Wait();
|
||||||
|
internalActionManager.Execute("plugin", "load").Wait();
|
||||||
|
internalActionManager.Refresh().Wait();
|
||||||
|
|
||||||
public static void Main(string[] args)
|
while (true)
|
||||||
{
|
{
|
||||||
Directory.CreateDirectory("./Data/Resources");
|
var cmd = Console.ReadLine();
|
||||||
Directory.CreateDirectory("./Data/Languages");
|
var args = cmd.Split(' ');
|
||||||
Directory.CreateDirectory("./Data/Plugins/Commands");
|
var command = args[0];
|
||||||
Directory.CreateDirectory("./Data/Plugins/Events");
|
args = args.Skip(1).ToArray();
|
||||||
if (!File.Exists("./Data/Resources/DiscordBotCore.data") || (Functions.readCodeFromFile("./Data/Resources/DiscordBotCore.data", "BOT_TOKEN", '=').Length != 59 && Functions.readCodeFromFile("./Data/Resources/DiscordBotCore.data", "BOT_TOKEN", '=').Length != 70))
|
if (args.Length == 0)
|
||||||
{
|
args = null;
|
||||||
File.WriteAllText("./Data/Resources/DiscordBotCore.data", "BOT_TOKEN=token\nBOT_PREFIX=!\n");
|
|
||||||
while (true)
|
|
||||||
{
|
|
||||||
Console.WriteLine("Please insert your token: ");
|
|
||||||
Console.Write("TOKEN: ");
|
|
||||||
string botToken = Console.ReadLine();
|
|
||||||
if (botToken.Length == 59 || botToken.Length == 70)
|
|
||||||
{
|
|
||||||
string prefix = Functions.readCodeFromFile("./Data/Resources/DiscordBotCore.data", "BOT_PREFIX", '=');
|
|
||||||
if (prefix == string.Empty || prefix == null)
|
|
||||||
prefix = "!";
|
|
||||||
File.WriteAllText("./Data/Resources/DiscordBotCore.data", $"BOT_TOKEN={botToken}\nBOT_PREFIX={prefix}\n");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
else Console.WriteLine("Invalid Token !");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
HandleInput(args).Wait();
|
internalActionManager.Execute(command, args).Wait(); // Execute the command
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Reset all settings for the bot
|
/// Start the bot without user interface
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private static Task ResetSettings()
|
/// <returns>Returns the bootloader for the Discord Bot</returns>
|
||||||
|
private static async Task StartNoGui()
|
||||||
|
{
|
||||||
|
|
||||||
|
AnsiConsole.MarkupLine($"[yellow]Running on version: {AppSettings["Version"]}[/]");
|
||||||
|
AnsiConsole.MarkupLine("[yellow]Git SethBot: https://github.com/andreitdr/SethDiscordBot [/]");
|
||||||
|
AnsiConsole.MarkupLine("[yellow]Git Plugins: https://github.com/andreitdr/SethPlugins [/]");
|
||||||
|
|
||||||
|
AnsiConsole.MarkupLine("[yellow]Remember to close the bot using the shutdown command ([/][red]exit[/][yellow]) or some settings won't be saved[/]");
|
||||||
|
AnsiConsole.MarkupLine($"[yellow]Running on [/][magenta]{(OperatingSystem.IsWindows() ? "Windows" : "Linux")}[/]");
|
||||||
|
|
||||||
|
AnsiConsole.MarkupLine("[yellow]===== Seth Discord Bot =====[/]");
|
||||||
|
|
||||||
|
try
|
||||||
{
|
{
|
||||||
string[] files = Directory.GetFiles(@"./Data/Resources");
|
var token = AppSettings["token"];
|
||||||
foreach (string file in files) File.Delete(file);
|
var prefix = AppSettings["prefix"];
|
||||||
return Task.CompletedTask;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// The main loop for the discord bot
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="discordbooter">The discord booter used to start the application</param>
|
|
||||||
private static async Task NoGUI(Boot discordbooter)
|
|
||||||
{
|
|
||||||
LoadLanguage();
|
|
||||||
if (loadPluginsOnStartup)
|
|
||||||
LoadPlugins(discordbooter);
|
|
||||||
if (listPluginsAtStartup)
|
|
||||||
await manager.ListAvailablePlugins();
|
|
||||||
if (listLanguagAtStartup)
|
|
||||||
await languageManager.ListAllLanguages();
|
|
||||||
|
|
||||||
|
|
||||||
Console_Utilities.ProgressBar pbar;
|
|
||||||
IProgress<float> progress = null;
|
|
||||||
Task t;
|
|
||||||
int prg = 0;
|
|
||||||
|
|
||||||
|
|
||||||
while (true)
|
|
||||||
{
|
|
||||||
Console.ForegroundColor = ConsoleColor.White;
|
|
||||||
Console_Utilities.WriteColorText("&mConsole ", false);
|
|
||||||
string[] data = Console.ReadLine().Split(' ');
|
|
||||||
|
|
||||||
if (data[0].Length < 2)
|
|
||||||
continue; // The input command is less then 2 characters long
|
|
||||||
|
|
||||||
switch (data[0])
|
|
||||||
{
|
|
||||||
case "shutdown":
|
|
||||||
case "sd":
|
|
||||||
if (discordbooter.client.ConnectionState == ConnectionState.Connected)
|
|
||||||
await discordbooter.ShutDown().ContinueWith(t => { Environment.Exit(0); });
|
|
||||||
break;
|
|
||||||
case "reload":
|
|
||||||
case "rl":
|
|
||||||
if (Environment.OSVersion.Platform != PlatformID.Win32NT)
|
|
||||||
{
|
|
||||||
Console.WriteLine("This command is for windows users ONLY");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
Process.Start("./DiscordBot.exe", "--cmd lp");
|
|
||||||
if (discordbooter.client.ConnectionState == ConnectionState.Connected)
|
|
||||||
await discordbooter.ShutDown();
|
|
||||||
else Environment.Exit(0);
|
|
||||||
break;
|
|
||||||
case "listplugs":
|
|
||||||
await manager.ListAvailablePlugins();
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "dwplug":
|
|
||||||
string name = data.MergeStrings(1);
|
|
||||||
// info[0] = plugin type
|
|
||||||
// info[1] = plugin link
|
|
||||||
// info[2] = if others are required, or string.Empty if none
|
|
||||||
string[] info = await manager.GetPluginLinkByName(name);
|
|
||||||
if (info[1] == null) // link is null
|
|
||||||
{
|
|
||||||
if (name == "")
|
|
||||||
{
|
|
||||||
Console_Utilities.WriteColorText($"Name is invalid");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
Console_Utilities.WriteColorText($"Failed to find plugin &b{name} &c! Use &glistplugs &ccommand to display all available plugins !");
|
|
||||||
break;
|
|
||||||
|
|
||||||
}
|
|
||||||
string path = "./Data/Plugins/" + info[0] + "s/" + name + ".dll";
|
|
||||||
|
|
||||||
await ServerCom.DownloadFileAsync(info[1], path);
|
|
||||||
Console.WriteLine("\n");
|
|
||||||
|
|
||||||
// check requirements if any
|
|
||||||
|
|
||||||
if (info.Length == 3 && info[2] != string.Empty && info[2] != null)
|
|
||||||
{
|
|
||||||
Console.WriteLine($"Downloading requirements for plugin : {name}");
|
|
||||||
|
|
||||||
List<string> lines = await ServerCom.ReadTextFromFile(info[2]);
|
|
||||||
int i = 1;
|
|
||||||
|
|
||||||
foreach (var line in lines)
|
|
||||||
{
|
|
||||||
string[] split = line.Split(',');
|
|
||||||
Console.WriteLine($"\nDownloading item: {split[1]}");
|
|
||||||
|
|
||||||
|
|
||||||
await ServerCom.DownloadFileAsync(split[0], "./" + split[1]);
|
|
||||||
Console.WriteLine();
|
|
||||||
i++;
|
|
||||||
}
|
|
||||||
Console.WriteLine();
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
break;
|
|
||||||
case "setlang":
|
|
||||||
if (data.Length == 2)
|
|
||||||
SetLanguage(data[1]);
|
|
||||||
else Console.WriteLine("Invalid arguments");
|
|
||||||
break;
|
|
||||||
case "set-setting":
|
|
||||||
if (data.Length >= 3)
|
|
||||||
Functions.WriteToSettingsFast(data[1], Functions.MergeStrings(data, 2));
|
|
||||||
else Console.WriteLine("Failed to write to settings. Invalid params");
|
|
||||||
break;
|
|
||||||
case "listlang":
|
|
||||||
await languageManager.ListAllLanguages();
|
|
||||||
break;
|
|
||||||
case "dwlang":
|
|
||||||
string Lname = data.MergeStrings(1);
|
|
||||||
string[] link = await languageManager.GetDownloadLink(Lname);
|
|
||||||
try
|
|
||||||
{
|
|
||||||
if (link[0] is null || link is null)
|
|
||||||
{
|
|
||||||
if (Lname == "")
|
|
||||||
{
|
|
||||||
Console_Utilities.WriteColorText($"Name is invalid");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
Console_Utilities.WriteColorText("Failed to find language &b" + Lname + " &c! Use &glistlang &ccommand to display all available languages !");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
if (link[1].Contains("CrossPlatform") || link[1].Contains("cp"))
|
|
||||||
{
|
|
||||||
|
|
||||||
string path2 = Functions.langFolder + Lname + ".lng";
|
|
||||||
|
|
||||||
await ServerCom.DownloadFileAsync(link[0], path2);
|
|
||||||
Console.WriteLine("\n");
|
|
||||||
}
|
|
||||||
else Console_Utilities.WriteColorText("The language you are trying to download (&b" + Lname + "&c) is not compatible with the version of this bot. User &glistlang &ccommand in order to see all available languages for your current version !\n" + link[1]);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
catch
|
|
||||||
{
|
|
||||||
if (Lname == "")
|
|
||||||
{
|
|
||||||
Console_Utilities.WriteColorText($"Name is invalid");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
Console_Utilities.WriteColorText("Failed to find language &b" + Lname + " &c! Use &glistlang &ccommand to display all available languages !");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
case "loadplugins":
|
|
||||||
case "lp":
|
|
||||||
if (PluginsLoaded)
|
|
||||||
{
|
|
||||||
Console_Utilities.WriteColorText("&rPlugins are already loaded");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
LoadPlugins(discordbooter);
|
|
||||||
|
|
||||||
break;
|
|
||||||
case "help":
|
|
||||||
Console.ForegroundColor = ConsoleColor.DarkYellow;
|
|
||||||
Console.WriteLine
|
|
||||||
(
|
|
||||||
"lp | loadplugins -> load all plugins\n" +
|
|
||||||
"sd | shutdown->close connection to the server(stop bot)\n" +
|
|
||||||
"token -> display the current token\n" +
|
|
||||||
"listplugs -> list all available plugins\n" +
|
|
||||||
"dwplug [name] -> download plugin by name\n" +
|
|
||||||
"listlang -> list all available languages\n" +
|
|
||||||
"dwlang -> download language by name\n" +
|
|
||||||
"setlang [name] -> set language from the downloaded languages\n" +
|
|
||||||
"set-setting [setting.path] [value] -> set setting value"
|
|
||||||
);
|
|
||||||
Console.ForegroundColor = ConsoleColor.White;
|
|
||||||
break;
|
|
||||||
case "token":
|
|
||||||
if (File.Exists("./Data/Resources/DiscordBotCore.data"))
|
|
||||||
Console.WriteLine("Token: " + Functions.readCodeFromFile("./Data/Resources/DiscordBotCore.data", "BOT_TOKEN", '='));
|
|
||||||
else Console.WriteLine("File could not be found. Please register token");
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
goto case "help";
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private static void LoadPlugins(Boot discordbooter)
|
|
||||||
{
|
|
||||||
var loader = new PluginLoader(discordbooter.client);
|
|
||||||
loader.onCMDLoad += (name, typeName, success, exception) =>
|
|
||||||
{
|
|
||||||
Console.ForegroundColor = ConsoleColor.Green;
|
|
||||||
if (name == null || name.Length < 2)
|
|
||||||
name = typeName;
|
|
||||||
if (success)
|
|
||||||
if (Language.ActiveLanguage == null)
|
|
||||||
Console.WriteLine("[CMD] Successfully loaded command : " + name);
|
|
||||||
else Console.WriteLine(Language.ActiveLanguage.FormatText(Language.ActiveLanguage.LanguageWords["COMMAND_LOAD_SUCCESS"], name));
|
|
||||||
else
|
|
||||||
if (Language.ActiveLanguage == null)
|
|
||||||
Console.WriteLine("[CMD] Failed to load command : " + name + " because " + exception.Message);
|
|
||||||
else
|
|
||||||
Console.WriteLine(Language.ActiveLanguage.FormatText(Language.ActiveLanguage.LanguageWords["COMMAND_LOAD_FAIL"], name, exception.Message));
|
|
||||||
Console.ForegroundColor = ConsoleColor.Red;
|
|
||||||
};
|
|
||||||
loader.onEVELoad += (name, typeName, success, exception) =>
|
|
||||||
{
|
|
||||||
if (name == null || name.Length < 2)
|
|
||||||
name = typeName;
|
|
||||||
Console.ForegroundColor = ConsoleColor.Green;
|
|
||||||
if (success)
|
|
||||||
if (Language.ActiveLanguage == null)
|
|
||||||
Console.WriteLine("[EVENT] Successfully loaded event : " + name);
|
|
||||||
else
|
|
||||||
Console.WriteLine(Language.ActiveLanguage.FormatText(Language.ActiveLanguage.LanguageWords["EVENT_LOAD_SUCCESS"], name));
|
|
||||||
else
|
|
||||||
if (Language.ActiveLanguage == null)
|
|
||||||
Console.WriteLine("[EVENT] Failed to load event : " + name + " because " + exception.Message);
|
|
||||||
else
|
|
||||||
Console.WriteLine(Language.ActiveLanguage.FormatText(Language.ActiveLanguage.LanguageWords["EVENT_LOAD_FAIL"], name, exception.Message));
|
|
||||||
Console.ForegroundColor = ConsoleColor.Red;
|
|
||||||
};
|
|
||||||
loader.LoadPlugins();
|
|
||||||
|
|
||||||
PluginsLoaded = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Load the language from the specified file
|
|
||||||
/// </summary>
|
|
||||||
private static bool LoadLanguage()
|
|
||||||
{
|
|
||||||
string folder = Functions.langFolder;
|
|
||||||
string langSettings = "./Data/Resources/Language.txt";
|
|
||||||
if (!File.Exists(langSettings))
|
|
||||||
File.WriteAllText(langSettings, "Language=English");
|
|
||||||
//Load language from the specified file ...
|
|
||||||
Language.ActiveLanguage = null;
|
|
||||||
|
|
||||||
string langname = Functions.readCodeFromFile(langSettings, "Language", '=');
|
|
||||||
if (langname == "English")
|
|
||||||
{
|
|
||||||
Language.ActiveLanguage = null;
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
foreach (var file in Directory.GetFiles(folder))
|
|
||||||
{
|
|
||||||
if (Functions.readCodeFromFile(file, "LANGUAGE_NAME", '=') == langname)
|
|
||||||
{
|
|
||||||
Language.ActiveLanguage = Language.CreateLanguageFromFile(file);
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (Language.ActiveLanguage == null)
|
|
||||||
{
|
|
||||||
File.WriteAllText(langSettings, "Language=English");
|
|
||||||
Console_Utilities.WriteColorText($"Failed to find language &r{langname} &c! Check available languages using command: &glistlang");
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void SetLanguage(string LanguageName)
|
|
||||||
{
|
|
||||||
string langSettings = Functions.dataFolder + "Language.txt";
|
|
||||||
File.WriteAllText(langSettings, "Language=" + LanguageName);
|
|
||||||
|
|
||||||
try
|
|
||||||
{
|
|
||||||
bool success = LoadLanguage();
|
|
||||||
if (success)
|
|
||||||
{
|
|
||||||
Console_Utilities.WriteColorText($"Language has been setted to: &g{LanguageName}");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
Console_Utilities.WriteColorText($"Could not find language &r{LanguageName}.");
|
|
||||||
Functions.WriteErrFile(ex.ToString());
|
|
||||||
File.WriteAllText(langSettings, "Language=English");
|
|
||||||
LoadLanguage();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Start the bot without user interface
|
|
||||||
/// </summary>
|
|
||||||
/// <returns>Returns the boot loader for the Discord Bot</returns>
|
|
||||||
private static async Task<Boot> StartNoGUI()
|
|
||||||
{
|
|
||||||
|
|
||||||
Console.Clear();
|
|
||||||
Console.ForegroundColor = ConsoleColor.DarkYellow;
|
|
||||||
//Console.WriteLine("Discord BOT for Cross Platform\n\nCreated by: Wizzy\nDiscord: Wizzy#9181");
|
|
||||||
Console.ForegroundColor = ConsoleColor.White;
|
|
||||||
Console.WriteLine("============================ Discord BOT - Cross Platform ============================");
|
|
||||||
string token = Functions.readCodeFromFile(Functions.dataFolder + "DiscordBotCore.data", "BOT_TOKEN", '=');
|
|
||||||
string prefix = Functions.readCodeFromFile(Functions.dataFolder + "DiscordBotCore.data", "BOT_PREFIX", '=');
|
|
||||||
|
|
||||||
var discordbooter = new Boot(token, prefix);
|
var discordbooter = new Boot(token, prefix);
|
||||||
await discordbooter.Awake();
|
await discordbooter.Awake();
|
||||||
return discordbooter;
|
|
||||||
}
|
}
|
||||||
|
catch (Exception ex)
|
||||||
/// <summary>
|
|
||||||
/// Clear folder
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="d">Directory path</param>
|
|
||||||
private static Task ClearFolder(string d)
|
|
||||||
{
|
{
|
||||||
string[] files = Directory.GetFiles(d);
|
Logger.Log(ex.ToString(), typeof(Program), LogType.CRITICAL);
|
||||||
int fileNumb = files.Length;
|
|
||||||
for (var i = 0; i < fileNumb; i++)
|
|
||||||
{
|
|
||||||
File.Delete(files[i]);
|
|
||||||
Console.WriteLine("Deleting : " + files[i]);
|
|
||||||
}
|
|
||||||
|
|
||||||
return Task.CompletedTask;
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Handle user input arguments from the startup of the application
|
/// Handle user input arguments from the startup of the application
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="args">The arguments</param>
|
private static async Task HandleInput()
|
||||||
private static async Task HandleInput(string[] args)
|
{
|
||||||
|
await StartNoGui();
|
||||||
|
try
|
||||||
{
|
{
|
||||||
|
internalActionManager = new InternalActionManager(AppSettings["PluginFolder"], "*.dll");
|
||||||
if (args.Length > 0)
|
NoGUI();
|
||||||
if (args[0] == "progress")
|
}
|
||||||
{
|
catch (IOException ex)
|
||||||
Console_Utilities.ProgressBar bar = new Console_Utilities.ProgressBar(100, "Download");
|
{
|
||||||
for (int i = 0; i <= 100; i++)
|
if (ex.Message == "No process is on the other end of the pipe." || (uint)ex.HResult == 0x800700E9)
|
||||||
{
|
|
||||||
bar.Update(i);
|
|
||||||
await Task.Delay(10);
|
|
||||||
|
|
||||||
}
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
if (args.Length == 0)
|
|
||||||
{
|
{
|
||||||
if (File.Exists("./ref/startupArguments.txt"))
|
Logger.Log("An error occured while closing the bot last time. Please consider closing the bot using the &rexit&c method !\n" +
|
||||||
{
|
"There is a risk of losing all data or corruption of the save file, which in some cases requires to reinstall the bot !",
|
||||||
var lines = await File.ReadAllLinesAsync("./ref/startupArguments.txt");
|
typeof(Program), LogType.ERROR
|
||||||
args = lines;
|
);
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
int len = args.Length;
|
|
||||||
if (len == 1 && args[0] == "--help")
|
|
||||||
{
|
|
||||||
Console.WriteLine("Available commands:\n--exec -> start the bot with tools enabled");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (len == 1 && args[0] == "--logout")
|
|
||||||
{
|
|
||||||
File.Delete(Functions.dataFolder + "Login.dat");
|
|
||||||
Console.WriteLine("Logged out. Please restart the application !");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (len >= 2 && args[0] == "--encrypt")
|
|
||||||
{
|
|
||||||
string s2e = args.MergeStrings(1);
|
|
||||||
Console.WriteLine("MD5: " + await Cryptography.CreateMD5(s2e));
|
|
||||||
Console.WriteLine("SHA356: " + await Cryptography.CreateSHA256(s2e));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (len > 0 && (args.Contains("--cmd") || args.Contains("--args")))
|
|
||||||
{
|
|
||||||
if (args.Contains("lp") || args.Contains("loadplugins"))
|
|
||||||
loadPluginsOnStartup = true;
|
|
||||||
if (args.Contains("listplugs"))
|
|
||||||
listPluginsAtStartup = true;
|
|
||||||
if (args.Contains("listlang"))
|
|
||||||
listLanguagAtStartup = true;
|
|
||||||
|
|
||||||
len = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if (len == 0 || args[0] != "--exec" && args[0] != "--execute")
|
|
||||||
{
|
|
||||||
Boot b = await StartNoGUI();
|
|
||||||
await NoGUI(b);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
Console.ForegroundColor = ConsoleColor.DarkYellow;
|
|
||||||
Console.WriteLine("Execute command interface noGUI\n\n");
|
|
||||||
Console.WriteLine(
|
|
||||||
"\tCommand name\t\t\t\tDescription\n" +
|
|
||||||
"-- help | -help\t\t ------ \tDisplay the help message\n" +
|
|
||||||
"--reset-full\t\t ------ \tReset all files (clear files)\n" +
|
|
||||||
"--reset-settings\t ------ \tReset only bot settings\n" +
|
|
||||||
"--reset-logs\t\t ------ \tClear up the output folder\n" +
|
|
||||||
"--start\t\t ------ \tStart the bot\n" +
|
|
||||||
"exit\t\t\t ------ \tClose the application"
|
|
||||||
);
|
|
||||||
while (true)
|
|
||||||
{
|
|
||||||
Console.ForegroundColor = ConsoleColor.White;
|
|
||||||
Console.Write("> ");
|
|
||||||
string[] message = Console.ReadLine().Split(' ');
|
|
||||||
|
|
||||||
switch (message[0])
|
|
||||||
{
|
|
||||||
case "--reset-settings":
|
|
||||||
await ResetSettings();
|
|
||||||
Console.WriteLine("Successfully reseted all settings !");
|
|
||||||
break;
|
|
||||||
case "--help":
|
|
||||||
case "-help":
|
|
||||||
Console.ForegroundColor = ConsoleColor.DarkYellow;
|
|
||||||
Console.WriteLine(
|
|
||||||
"\tCommand name\t\t\t\tDescription\n" +
|
|
||||||
"-- help | -help\t\t ------ \tDisplay the help message\n" +
|
|
||||||
"--reset-full\t\t ------ \tReset all files (clear files)\n" +
|
|
||||||
"--reset-settings\t ------ \tReset only bot settings\n" +
|
|
||||||
"--reset-logs\t\t ------ \tClear up the output folder\n" +
|
|
||||||
"--start\t\t ------ \tStart the bot\n" +
|
|
||||||
"exit\t\t\t ------ \tClose the application"
|
|
||||||
);
|
|
||||||
break;
|
|
||||||
case "--reset-full":
|
|
||||||
await ClearFolder("./Data/Resources/");
|
|
||||||
await ClearFolder("./Output/Logs/");
|
|
||||||
await ClearFolder("./Output/Errors");
|
|
||||||
await ClearFolder("./Data/Languages/");
|
|
||||||
await ClearFolder("./Data/Plugins/Addons");
|
|
||||||
await ClearFolder("./Data/Plugins/Commands");
|
|
||||||
await ClearFolder("./Data/Plugins/Events");
|
|
||||||
Console.WriteLine("Successfully cleared all folders");
|
|
||||||
break;
|
|
||||||
case "--reset-logs":
|
|
||||||
await ClearFolder("./Output/Logs");
|
|
||||||
await ClearFolder("./Output/Errors");
|
|
||||||
Console.WriteLine("Successfully cleard logs folder");
|
|
||||||
break;
|
|
||||||
case "--exit":
|
|
||||||
case "exit":
|
|
||||||
Environment.Exit(0);
|
|
||||||
break;
|
|
||||||
case "--start":
|
|
||||||
Boot booter = await StartNoGUI();
|
|
||||||
await NoGUI(booter);
|
|
||||||
return;
|
|
||||||
default:
|
|
||||||
Console.WriteLine("Failed to execute command " + message[0]);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static async Task PreLoadComponents(string[] args)
|
||||||
|
{
|
||||||
|
await Initialize();
|
||||||
|
|
||||||
|
AppSettings["Version"] = Assembly.GetExecutingAssembly().GetName().Version.ToString();
|
||||||
|
|
||||||
|
PluginManager.Updater.Application.AppUpdater updater = new();
|
||||||
|
var update = await updater.CheckForUpdates();
|
||||||
|
|
||||||
|
if (update != PluginManager.Updater.Application.Update.None)
|
||||||
|
{
|
||||||
|
Console.WriteLine($"New update available: {update.UpdateVersion}");
|
||||||
|
Console.WriteLine($"Download link: {update.UpdateUrl}");
|
||||||
|
Console.WriteLine($"Update notes: {update.UpdateNotes}\n\n");
|
||||||
|
|
||||||
|
Environment.Exit(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
Logger.OnLog += (sender, logMessage) =>
|
||||||
|
{
|
||||||
|
var messageColor = logMessage.Type switch
|
||||||
|
{
|
||||||
|
LogType.INFO => "[green]",
|
||||||
|
LogType.WARNING => "[yellow]",
|
||||||
|
LogType.ERROR => "[red]",
|
||||||
|
LogType.CRITICAL => "[red]",
|
||||||
|
_ => "[white]"
|
||||||
|
};
|
||||||
|
|
||||||
|
if (logMessage.Message.Contains('['))
|
||||||
|
{
|
||||||
|
Console.WriteLine(logMessage.Message);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
AnsiConsole.MarkupLine($"{messageColor}{logMessage.ThrowTime} {logMessage.Message} [/]");
|
||||||
|
};
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
31
DiscordBot/Utilities/Console Utilities.cs
Normal file
31
DiscordBot/Utilities/Console Utilities.cs
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Threading;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using Spectre.Console;
|
||||||
|
|
||||||
|
namespace DiscordBot.Utilities;
|
||||||
|
|
||||||
|
public static class ConsoleUtilities
|
||||||
|
{
|
||||||
|
public static async Task<T> ExecuteWithProgressBar<T>(Task<T> function, string message)
|
||||||
|
{
|
||||||
|
T result = default;
|
||||||
|
await AnsiConsole.Progress()
|
||||||
|
.AutoClear(true)
|
||||||
|
.Columns(new TaskDescriptionColumn(), new ProgressBarColumn(), new PercentageColumn())
|
||||||
|
.StartAsync(
|
||||||
|
async ctx =>
|
||||||
|
{
|
||||||
|
var task = ctx.AddTask(message);
|
||||||
|
task.IsIndeterminate = true;
|
||||||
|
result = await function;
|
||||||
|
task.Increment(100);
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
}
|
||||||
56
DiscordBot/Utilities/TableData.cs
Normal file
56
DiscordBot/Utilities/TableData.cs
Normal file
@@ -0,0 +1,56 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Runtime.InteropServices.ComTypes;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using PluginManager.Others;
|
||||||
|
using Spectre.Console;
|
||||||
|
using Spectre.Console.Rendering;
|
||||||
|
|
||||||
|
namespace DiscordBot.Utilities
|
||||||
|
{
|
||||||
|
public class TableData
|
||||||
|
{
|
||||||
|
public List<string> Columns;
|
||||||
|
public List<OneOf<string, IRenderable>[]> Rows;
|
||||||
|
|
||||||
|
public TableData()
|
||||||
|
{
|
||||||
|
Columns = new List<string>();
|
||||||
|
Rows = new List<OneOf<string, IRenderable>[]>();
|
||||||
|
}
|
||||||
|
|
||||||
|
public TableData(List<string> columns)
|
||||||
|
{
|
||||||
|
Columns = columns;
|
||||||
|
Rows = new List<OneOf<string, IRenderable>[]>();
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool IsEmpty => Rows.Count == 0;
|
||||||
|
public bool HasRoundBorders { get; set; } = true;
|
||||||
|
public bool DisplayLinesBetweenRows { get; set; } = false;
|
||||||
|
|
||||||
|
public void AddRow(OneOf<string, IRenderable>[] row)
|
||||||
|
{
|
||||||
|
Rows.Add(row);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void PrintTable()
|
||||||
|
{
|
||||||
|
var table = new Table();
|
||||||
|
table.Border(this.HasRoundBorders ? TableBorder.Rounded : TableBorder.Square);
|
||||||
|
table.AddColumns(this.Columns.ToArray());
|
||||||
|
table.ShowRowSeparators = DisplayLinesBetweenRows;
|
||||||
|
foreach (var row in this.Rows)
|
||||||
|
{
|
||||||
|
table.AddRow(row.Select(element => element.Match(
|
||||||
|
(data) => new Markup(data),
|
||||||
|
(data) => data
|
||||||
|
)));
|
||||||
|
}
|
||||||
|
|
||||||
|
AnsiConsole.Write(table);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
35
DiscordBot/builder.bat
Normal file
35
DiscordBot/builder.bat
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
@echo off
|
||||||
|
echo "Building..."
|
||||||
|
|
||||||
|
echo "Building linux-x64 not self-contained"
|
||||||
|
dotnet publish -r linux-x64 -p:PublishSingleFile=false --self-contained true -c Release -o ../publish/linux-x64
|
||||||
|
|
||||||
|
echo "Building win-x64 not self-contained"
|
||||||
|
dotnet publish -r win-x64 -p:PublishSingleFile=false --self-contained true -c Release -o ../publish/win-x64
|
||||||
|
|
||||||
|
echo "Building osx-x64 not self-contained"
|
||||||
|
dotnet publish -r osx-x64 -p:PublishSingleFile=false --self-contained true -c Release -o ../publish/osx-x64
|
||||||
|
|
||||||
|
|
||||||
|
echo "Building linux-x64 self-contained"
|
||||||
|
dotnet publish -r linux-x64 -p:PublishSingleFile=true --self-contained true -c Release -o ../publish/linux-x64-selfcontained
|
||||||
|
|
||||||
|
echo "Building win-x64 self-contained"
|
||||||
|
dotnet publish -r win-x64 -p:PublishSingleFile=true --self-contained true -c Release -o ../publish/win-x64-selfcontained
|
||||||
|
|
||||||
|
echo "Building osx-x64 self-contained"
|
||||||
|
dotnet publish -r osx-x64 -p:PublishSingleFile=true --self-contained true -c Release -o ../publish/osx-x64-selfcontained
|
||||||
|
|
||||||
|
echo "Zipping..."
|
||||||
|
mkdir ../publish/zip
|
||||||
|
|
||||||
|
|
||||||
|
zip -r ../publish/zip/linux-x64.zip ../publish/linux-x64
|
||||||
|
zip -r ../publish/zip/win-x64.zip ../publish/win-x64
|
||||||
|
zip -r ../publish/zip/osx-x64.zip ../publish/osx-x64
|
||||||
|
|
||||||
|
zip -r ../publish/zip/linux-x64-selfcontained.zip ../publish/linux-x64-selfcontained
|
||||||
|
zip -r ../publish/zip/win-x64-selfcontained.zip ../publish/win-x64-selfcontained
|
||||||
|
zip -r ../publish/zip/osx-x64-selfcontained.zip ../publish/osx-x64-selfcontained
|
||||||
|
|
||||||
|
echo "Done!"
|
||||||
36
DiscordBot/builder.sh
Normal file
36
DiscordBot/builder.sh
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
# All files in this directory will be copied to the root of the container
|
||||||
|
|
||||||
|
echo "Building..."
|
||||||
|
|
||||||
|
echo "Building linux-x64 not self-contained"
|
||||||
|
dotnet publish -r linux-x64 -p:PublishSingleFile=false --self-contained true -c Release -o ./publish/linux-x64
|
||||||
|
|
||||||
|
echo "Building win-x64 not self-contained"
|
||||||
|
dotnet publish -r win-x64 -p:PublishSingleFile=false --self-contained true -c Release -o ./publish/win-x64
|
||||||
|
|
||||||
|
echo "Building osx-x64 not self-contained"
|
||||||
|
dotnet publish -r osx-x64 -p:PublishSingleFile=false --self-contained true -c Release -o ./publish/osx-x64
|
||||||
|
|
||||||
|
#One file per platform
|
||||||
|
echo "Building linux-x64 self-contained"
|
||||||
|
dotnet publish -r linux-x64 -p:PublishSingleFile=true --self-contained true -c Release -o ./publish/linux-x64-selfcontained
|
||||||
|
|
||||||
|
echo "Building win-x64 self-contained"
|
||||||
|
dotnet publish -r win-x64 -p:PublishSingleFile=true --self-contained true -c Release -o ./publish/win-x64-selfcontained
|
||||||
|
|
||||||
|
echo "Building osx-x64 self-contained"
|
||||||
|
dotnet publish -r osx-x64 -p:PublishSingleFile=true --self-contained true -c Release -o ./publish/osx-x64-selfcontained
|
||||||
|
|
||||||
|
echo "Zipping..."
|
||||||
|
mkdir ./publish/zip
|
||||||
|
|
||||||
|
|
||||||
|
zip -r ./publish/zip/linux-x64.zip ./publish/linux-x64
|
||||||
|
zip -r ./publish/zip/win-x64.zip ./publish/win-x64
|
||||||
|
zip -r ./publish/zip/osx-x64.zip ./publish/osx-x64
|
||||||
|
|
||||||
|
zip -r ./publish/zip/linux-x64-selfcontained.zip ./publish/linux-x64-selfcontained
|
||||||
|
zip -r ./publish/zip/win-x64-selfcontained.zip ./publish/win-x64-selfcontained
|
||||||
|
zip -r ./publish/zip/osx-x64-selfcontained.zip ./publish/osx-x64-selfcontained
|
||||||
|
|
||||||
|
echo "Done!"
|
||||||
454
DiscordBotUI/.gitignore
vendored
Normal file
454
DiscordBotUI/.gitignore
vendored
Normal file
@@ -0,0 +1,454 @@
|
|||||||
|
## Ignore Visual Studio temporary files, build results, and
|
||||||
|
## files generated by popular Visual Studio add-ons.
|
||||||
|
##
|
||||||
|
## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
|
||||||
|
|
||||||
|
# User-specific files
|
||||||
|
*.rsuser
|
||||||
|
*.suo
|
||||||
|
*.user
|
||||||
|
*.userosscache
|
||||||
|
*.sln.docstates
|
||||||
|
|
||||||
|
# User-specific files (MonoDevelop/Xamarin Studio)
|
||||||
|
*.userprefs
|
||||||
|
|
||||||
|
# Mono auto generated files
|
||||||
|
mono_crash.*
|
||||||
|
|
||||||
|
# Build results
|
||||||
|
[Dd]ebug/
|
||||||
|
[Dd]ebugPublic/
|
||||||
|
[Rr]elease/
|
||||||
|
[Rr]eleases/
|
||||||
|
x64/
|
||||||
|
x86/
|
||||||
|
[Ww][Ii][Nn]32/
|
||||||
|
[Aa][Rr][Mm]/
|
||||||
|
[Aa][Rr][Mm]64/
|
||||||
|
bld/
|
||||||
|
[Bb]in/
|
||||||
|
[Oo]bj/
|
||||||
|
[Ll]og/
|
||||||
|
[Ll]ogs/
|
||||||
|
|
||||||
|
# Visual Studio 2015/2017 cache/options directory
|
||||||
|
.vs/
|
||||||
|
# Uncomment if you have tasks that create the project's static files in wwwroot
|
||||||
|
#wwwroot/
|
||||||
|
|
||||||
|
# Visual Studio 2017 auto generated files
|
||||||
|
Generated\ Files/
|
||||||
|
|
||||||
|
# MSTest test Results
|
||||||
|
[Tt]est[Rr]esult*/
|
||||||
|
[Bb]uild[Ll]og.*
|
||||||
|
|
||||||
|
# NUnit
|
||||||
|
*.VisualState.xml
|
||||||
|
TestResult.xml
|
||||||
|
nunit-*.xml
|
||||||
|
|
||||||
|
# Build Results of an ATL Project
|
||||||
|
[Dd]ebugPS/
|
||||||
|
[Rr]eleasePS/
|
||||||
|
dlldata.c
|
||||||
|
|
||||||
|
# Benchmark Results
|
||||||
|
BenchmarkDotNet.Artifacts/
|
||||||
|
|
||||||
|
# .NET Core
|
||||||
|
project.lock.json
|
||||||
|
project.fragment.lock.json
|
||||||
|
artifacts/
|
||||||
|
|
||||||
|
# Tye
|
||||||
|
.tye/
|
||||||
|
|
||||||
|
# ASP.NET Scaffolding
|
||||||
|
ScaffoldingReadMe.txt
|
||||||
|
|
||||||
|
# StyleCop
|
||||||
|
StyleCopReport.xml
|
||||||
|
|
||||||
|
# Files built by Visual Studio
|
||||||
|
*_i.c
|
||||||
|
*_p.c
|
||||||
|
*_h.h
|
||||||
|
*.ilk
|
||||||
|
*.meta
|
||||||
|
*.obj
|
||||||
|
*.iobj
|
||||||
|
*.pch
|
||||||
|
*.pdb
|
||||||
|
*.ipdb
|
||||||
|
*.pgc
|
||||||
|
*.pgd
|
||||||
|
*.rsp
|
||||||
|
*.sbr
|
||||||
|
*.tlb
|
||||||
|
*.tli
|
||||||
|
*.tlh
|
||||||
|
*.tmp
|
||||||
|
*.tmp_proj
|
||||||
|
*_wpftmp.csproj
|
||||||
|
*.log
|
||||||
|
*.vspscc
|
||||||
|
*.vssscc
|
||||||
|
.builds
|
||||||
|
*.pidb
|
||||||
|
*.svclog
|
||||||
|
*.scc
|
||||||
|
|
||||||
|
# Chutzpah Test files
|
||||||
|
_Chutzpah*
|
||||||
|
|
||||||
|
# Visual C++ cache files
|
||||||
|
ipch/
|
||||||
|
*.aps
|
||||||
|
*.ncb
|
||||||
|
*.opendb
|
||||||
|
*.opensdf
|
||||||
|
*.sdf
|
||||||
|
*.cachefile
|
||||||
|
*.VC.db
|
||||||
|
*.VC.VC.opendb
|
||||||
|
|
||||||
|
# Visual Studio profiler
|
||||||
|
*.psess
|
||||||
|
*.vsp
|
||||||
|
*.vspx
|
||||||
|
*.sap
|
||||||
|
|
||||||
|
# Visual Studio Trace Files
|
||||||
|
*.e2e
|
||||||
|
|
||||||
|
# TFS 2012 Local Workspace
|
||||||
|
$tf/
|
||||||
|
|
||||||
|
# Guidance Automation Toolkit
|
||||||
|
*.gpState
|
||||||
|
|
||||||
|
# ReSharper is a .NET coding add-in
|
||||||
|
_ReSharper*/
|
||||||
|
*.[Rr]e[Ss]harper
|
||||||
|
*.DotSettings.user
|
||||||
|
|
||||||
|
# TeamCity is a build add-in
|
||||||
|
_TeamCity*
|
||||||
|
|
||||||
|
# DotCover is a Code Coverage Tool
|
||||||
|
*.dotCover
|
||||||
|
|
||||||
|
# AxoCover is a Code Coverage Tool
|
||||||
|
.axoCover/*
|
||||||
|
!.axoCover/settings.json
|
||||||
|
|
||||||
|
# Coverlet is a free, cross platform Code Coverage Tool
|
||||||
|
coverage*.json
|
||||||
|
coverage*.xml
|
||||||
|
coverage*.info
|
||||||
|
|
||||||
|
# Visual Studio code coverage results
|
||||||
|
*.coverage
|
||||||
|
*.coveragexml
|
||||||
|
|
||||||
|
# NCrunch
|
||||||
|
_NCrunch_*
|
||||||
|
.*crunch*.local.xml
|
||||||
|
nCrunchTemp_*
|
||||||
|
|
||||||
|
# MightyMoose
|
||||||
|
*.mm.*
|
||||||
|
AutoTest.Net/
|
||||||
|
|
||||||
|
# Web workbench (sass)
|
||||||
|
.sass-cache/
|
||||||
|
|
||||||
|
# Installshield output folder
|
||||||
|
[Ee]xpress/
|
||||||
|
|
||||||
|
# DocProject is a documentation generator add-in
|
||||||
|
DocProject/buildhelp/
|
||||||
|
DocProject/Help/*.HxT
|
||||||
|
DocProject/Help/*.HxC
|
||||||
|
DocProject/Help/*.hhc
|
||||||
|
DocProject/Help/*.hhk
|
||||||
|
DocProject/Help/*.hhp
|
||||||
|
DocProject/Help/Html2
|
||||||
|
DocProject/Help/html
|
||||||
|
|
||||||
|
# Click-Once directory
|
||||||
|
publish/
|
||||||
|
|
||||||
|
# Publish Web Output
|
||||||
|
*.[Pp]ublish.xml
|
||||||
|
*.azurePubxml
|
||||||
|
# Note: Comment the next line if you want to checkin your web deploy settings,
|
||||||
|
# but database connection strings (with potential passwords) will be unencrypted
|
||||||
|
*.pubxml
|
||||||
|
*.publishproj
|
||||||
|
|
||||||
|
# Microsoft Azure Web App publish settings. Comment the next line if you want to
|
||||||
|
# checkin your Azure Web App publish settings, but sensitive information contained
|
||||||
|
# in these scripts will be unencrypted
|
||||||
|
PublishScripts/
|
||||||
|
|
||||||
|
# NuGet Packages
|
||||||
|
*.nupkg
|
||||||
|
# NuGet Symbol Packages
|
||||||
|
*.snupkg
|
||||||
|
# The packages folder can be ignored because of Package Restore
|
||||||
|
**/[Pp]ackages/*
|
||||||
|
# except build/, which is used as an MSBuild target.
|
||||||
|
!**/[Pp]ackages/build/
|
||||||
|
# Uncomment if necessary however generally it will be regenerated when needed
|
||||||
|
#!**/[Pp]ackages/repositories.config
|
||||||
|
# NuGet v3's project.json files produces more ignorable files
|
||||||
|
*.nuget.props
|
||||||
|
*.nuget.targets
|
||||||
|
|
||||||
|
# Microsoft Azure Build Output
|
||||||
|
csx/
|
||||||
|
*.build.csdef
|
||||||
|
|
||||||
|
# Microsoft Azure Emulator
|
||||||
|
ecf/
|
||||||
|
rcf/
|
||||||
|
|
||||||
|
# Windows Store app package directories and files
|
||||||
|
AppPackages/
|
||||||
|
BundleArtifacts/
|
||||||
|
Package.StoreAssociation.xml
|
||||||
|
_pkginfo.txt
|
||||||
|
*.appx
|
||||||
|
*.appxbundle
|
||||||
|
*.appxupload
|
||||||
|
|
||||||
|
# Visual Studio cache files
|
||||||
|
# files ending in .cache can be ignored
|
||||||
|
*.[Cc]ache
|
||||||
|
# but keep track of directories ending in .cache
|
||||||
|
!?*.[Cc]ache/
|
||||||
|
|
||||||
|
# Others
|
||||||
|
ClientBin/
|
||||||
|
~$*
|
||||||
|
*~
|
||||||
|
*.dbmdl
|
||||||
|
*.dbproj.schemaview
|
||||||
|
*.jfm
|
||||||
|
*.pfx
|
||||||
|
*.publishsettings
|
||||||
|
orleans.codegen.cs
|
||||||
|
|
||||||
|
# Including strong name files can present a security risk
|
||||||
|
# (https://github.com/github/gitignore/pull/2483#issue-259490424)
|
||||||
|
#*.snk
|
||||||
|
|
||||||
|
# Since there are multiple workflows, uncomment next line to ignore bower_components
|
||||||
|
# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
|
||||||
|
#bower_components/
|
||||||
|
|
||||||
|
# RIA/Silverlight projects
|
||||||
|
Generated_Code/
|
||||||
|
|
||||||
|
# Backup & report files from converting an old project file
|
||||||
|
# to a newer Visual Studio version. Backup files are not needed,
|
||||||
|
# because we have git ;-)
|
||||||
|
_UpgradeReport_Files/
|
||||||
|
Backup*/
|
||||||
|
UpgradeLog*.XML
|
||||||
|
UpgradeLog*.htm
|
||||||
|
ServiceFabricBackup/
|
||||||
|
*.rptproj.bak
|
||||||
|
|
||||||
|
# SQL Server files
|
||||||
|
*.mdf
|
||||||
|
*.ldf
|
||||||
|
*.ndf
|
||||||
|
|
||||||
|
# Business Intelligence projects
|
||||||
|
*.rdl.data
|
||||||
|
*.bim.layout
|
||||||
|
*.bim_*.settings
|
||||||
|
*.rptproj.rsuser
|
||||||
|
*- [Bb]ackup.rdl
|
||||||
|
*- [Bb]ackup ([0-9]).rdl
|
||||||
|
*- [Bb]ackup ([0-9][0-9]).rdl
|
||||||
|
|
||||||
|
# Microsoft Fakes
|
||||||
|
FakesAssemblies/
|
||||||
|
|
||||||
|
# GhostDoc plugin setting file
|
||||||
|
*.GhostDoc.xml
|
||||||
|
|
||||||
|
# Node.js Tools for Visual Studio
|
||||||
|
.ntvs_analysis.dat
|
||||||
|
node_modules/
|
||||||
|
|
||||||
|
# Visual Studio 6 build log
|
||||||
|
*.plg
|
||||||
|
|
||||||
|
# Visual Studio 6 workspace options file
|
||||||
|
*.opt
|
||||||
|
|
||||||
|
# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
|
||||||
|
*.vbw
|
||||||
|
|
||||||
|
# Visual Studio LightSwitch build output
|
||||||
|
**/*.HTMLClient/GeneratedArtifacts
|
||||||
|
**/*.DesktopClient/GeneratedArtifacts
|
||||||
|
**/*.DesktopClient/ModelManifest.xml
|
||||||
|
**/*.Server/GeneratedArtifacts
|
||||||
|
**/*.Server/ModelManifest.xml
|
||||||
|
_Pvt_Extensions
|
||||||
|
|
||||||
|
# Paket dependency manager
|
||||||
|
.paket/paket.exe
|
||||||
|
paket-files/
|
||||||
|
|
||||||
|
# FAKE - F# Make
|
||||||
|
.fake/
|
||||||
|
|
||||||
|
# CodeRush personal settings
|
||||||
|
.cr/personal
|
||||||
|
|
||||||
|
# Python Tools for Visual Studio (PTVS)
|
||||||
|
__pycache__/
|
||||||
|
*.pyc
|
||||||
|
|
||||||
|
# Cake - Uncomment if you are using it
|
||||||
|
# tools/**
|
||||||
|
# !tools/packages.config
|
||||||
|
|
||||||
|
# Tabs Studio
|
||||||
|
*.tss
|
||||||
|
|
||||||
|
# Telerik's JustMock configuration file
|
||||||
|
*.jmconfig
|
||||||
|
|
||||||
|
# BizTalk build output
|
||||||
|
*.btp.cs
|
||||||
|
*.btm.cs
|
||||||
|
*.odx.cs
|
||||||
|
*.xsd.cs
|
||||||
|
|
||||||
|
# OpenCover UI analysis results
|
||||||
|
OpenCover/
|
||||||
|
|
||||||
|
# Azure Stream Analytics local run output
|
||||||
|
ASALocalRun/
|
||||||
|
|
||||||
|
# MSBuild Binary and Structured Log
|
||||||
|
*.binlog
|
||||||
|
|
||||||
|
# NVidia Nsight GPU debugger configuration file
|
||||||
|
*.nvuser
|
||||||
|
|
||||||
|
# MFractors (Xamarin productivity tool) working folder
|
||||||
|
.mfractor/
|
||||||
|
|
||||||
|
# Local History for Visual Studio
|
||||||
|
.localhistory/
|
||||||
|
|
||||||
|
# BeatPulse healthcheck temp database
|
||||||
|
healthchecksdb
|
||||||
|
|
||||||
|
# Backup folder for Package Reference Convert tool in Visual Studio 2017
|
||||||
|
MigrationBackup/
|
||||||
|
|
||||||
|
# Ionide (cross platform F# VS Code tools) working folder
|
||||||
|
.ionide/
|
||||||
|
|
||||||
|
# Fody - auto-generated XML schema
|
||||||
|
FodyWeavers.xsd
|
||||||
|
|
||||||
|
##
|
||||||
|
## Visual studio for Mac
|
||||||
|
##
|
||||||
|
|
||||||
|
|
||||||
|
# globs
|
||||||
|
Makefile.in
|
||||||
|
*.userprefs
|
||||||
|
*.usertasks
|
||||||
|
config.make
|
||||||
|
config.status
|
||||||
|
aclocal.m4
|
||||||
|
install-sh
|
||||||
|
autom4te.cache/
|
||||||
|
*.tar.gz
|
||||||
|
tarballs/
|
||||||
|
test-results/
|
||||||
|
|
||||||
|
# Mac bundle stuff
|
||||||
|
*.dmg
|
||||||
|
*.app
|
||||||
|
|
||||||
|
# content below from: https://github.com/github/gitignore/blob/master/Global/macOS.gitignore
|
||||||
|
# General
|
||||||
|
.DS_Store
|
||||||
|
.AppleDouble
|
||||||
|
.LSOverride
|
||||||
|
|
||||||
|
# Icon must end with two \r
|
||||||
|
Icon
|
||||||
|
|
||||||
|
|
||||||
|
# Thumbnails
|
||||||
|
._*
|
||||||
|
|
||||||
|
# Files that might appear in the root of a volume
|
||||||
|
.DocumentRevisions-V100
|
||||||
|
.fseventsd
|
||||||
|
.Spotlight-V100
|
||||||
|
.TemporaryItems
|
||||||
|
.Trashes
|
||||||
|
.VolumeIcon.icns
|
||||||
|
.com.apple.timemachine.donotpresent
|
||||||
|
|
||||||
|
# Directories potentially created on remote AFP share
|
||||||
|
.AppleDB
|
||||||
|
.AppleDesktop
|
||||||
|
Network Trash Folder
|
||||||
|
Temporary Items
|
||||||
|
.apdisk
|
||||||
|
|
||||||
|
# content below from: https://github.com/github/gitignore/blob/master/Global/Windows.gitignore
|
||||||
|
# Windows thumbnail cache files
|
||||||
|
Thumbs.db
|
||||||
|
ehthumbs.db
|
||||||
|
ehthumbs_vista.db
|
||||||
|
|
||||||
|
# Dump file
|
||||||
|
*.stackdump
|
||||||
|
|
||||||
|
# Folder config file
|
||||||
|
[Dd]esktop.ini
|
||||||
|
|
||||||
|
# Recycle Bin used on file shares
|
||||||
|
$RECYCLE.BIN/
|
||||||
|
|
||||||
|
# Windows Installer files
|
||||||
|
*.cab
|
||||||
|
*.msi
|
||||||
|
*.msix
|
||||||
|
*.msm
|
||||||
|
*.msp
|
||||||
|
|
||||||
|
# Windows shortcuts
|
||||||
|
*.lnk
|
||||||
|
|
||||||
|
# JetBrains Rider
|
||||||
|
.idea/
|
||||||
|
*.sln.iml
|
||||||
|
|
||||||
|
##
|
||||||
|
## Visual Studio Code
|
||||||
|
##
|
||||||
|
.vscode/*
|
||||||
|
!.vscode/settings.json
|
||||||
|
!.vscode/tasks.json
|
||||||
|
!.vscode/launch.json
|
||||||
|
!.vscode/extensions.json
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
<PropertyGroup>
|
||||||
|
<OutputType>WinExe</OutputType>
|
||||||
|
<!--If you are willing to use Windows/MacOS native APIs you will need to create 3 projects.
|
||||||
|
One for Windows with net8.0-windows TFM, one for MacOS with net8.0-macos and one with net8.0 TFM for Linux.-->
|
||||||
|
<TargetFramework>net8.0</TargetFramework>
|
||||||
|
<Nullable>enable</Nullable>
|
||||||
|
<BuiltInComInteropSupport>true</BuiltInComInteropSupport>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<PropertyGroup>
|
||||||
|
<ApplicationManifest>app.manifest</ApplicationManifest>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<PackageReference Include="Avalonia.Desktop" Version="11.0.10" />
|
||||||
|
<!--Condition below is needed to remove Avalonia.Diagnostics package from build output in Release configuration.-->
|
||||||
|
<PackageReference Condition="'$(Configuration)' == 'Debug'" Include="Avalonia.Diagnostics" Version="11.0.10" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<ProjectReference Include="..\DiscordBotUI\DiscordBotUI.csproj" />
|
||||||
|
</ItemGroup>
|
||||||
|
</Project>
|
||||||
25
DiscordBotUI/DiscordBotUI.Desktop/Program.cs
Normal file
25
DiscordBotUI/DiscordBotUI.Desktop/Program.cs
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
using System;
|
||||||
|
|
||||||
|
using Avalonia;
|
||||||
|
using Avalonia.ReactiveUI;
|
||||||
|
|
||||||
|
namespace DiscordBotUI.Desktop
|
||||||
|
{
|
||||||
|
internal sealed class Program
|
||||||
|
{
|
||||||
|
// Initialization code. Don't use any Avalonia, third-party APIs or any
|
||||||
|
// SynchronizationContext-reliant code before AppMain is called: things aren't initialized
|
||||||
|
// yet and stuff might break.
|
||||||
|
[STAThread]
|
||||||
|
public static void Main(string[] args) => BuildAvaloniaApp()
|
||||||
|
.StartWithClassicDesktopLifetime(args);
|
||||||
|
|
||||||
|
// Avalonia configuration, don't remove; also used by visual designer.
|
||||||
|
public static AppBuilder BuildAvaloniaApp()
|
||||||
|
=> AppBuilder.Configure<App>()
|
||||||
|
.UsePlatformDetect()
|
||||||
|
.WithInterFont()
|
||||||
|
.LogToTrace()
|
||||||
|
.UseReactiveUI();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
{
|
||||||
|
"profiles": {
|
||||||
|
"DiscordBotUI.Desktop": {
|
||||||
|
"commandName": "Project"
|
||||||
|
},
|
||||||
|
"WSL": {
|
||||||
|
"commandName": "WSL2",
|
||||||
|
"distributionName": ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
18
DiscordBotUI/DiscordBotUI.Desktop/app.manifest
Normal file
18
DiscordBotUI/DiscordBotUI.Desktop/app.manifest
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1">
|
||||||
|
<!-- This manifest is used on Windows only.
|
||||||
|
Don't remove it as it might cause problems with window transparency and embedded controls.
|
||||||
|
For more details visit https://learn.microsoft.com/en-us/windows/win32/sbscs/application-manifests -->
|
||||||
|
<assemblyIdentity version="1.0.0.0" name="DiscordBotUI.Desktop"/>
|
||||||
|
|
||||||
|
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
|
||||||
|
<application>
|
||||||
|
<!-- A list of the Windows versions that this application has been tested on
|
||||||
|
and is designed to work with. Uncomment the appropriate elements
|
||||||
|
and Windows will automatically select the most compatible environment. -->
|
||||||
|
|
||||||
|
<!-- Windows 10 -->
|
||||||
|
<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}" />
|
||||||
|
</application>
|
||||||
|
</compatibility>
|
||||||
|
</assembly>
|
||||||
35
DiscordBotUI/DiscordBotUI.Desktop/builder.bat
Normal file
35
DiscordBotUI/DiscordBotUI.Desktop/builder.bat
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
@echo off
|
||||||
|
echo "Building..."
|
||||||
|
|
||||||
|
echo "Building linux-x64 not self-contained"
|
||||||
|
dotnet publish -r linux-x64 -p:PublishSingleFile=false --self-contained true -c Release -o ../publish/linux-x64
|
||||||
|
|
||||||
|
echo "Building win-x64 not self-contained"
|
||||||
|
dotnet publish -r win-x64 -p:PublishSingleFile=false --self-contained true -c Release -o ../publish/win-x64
|
||||||
|
|
||||||
|
echo "Building osx-x64 not self-contained"
|
||||||
|
dotnet publish -r osx-x64 -p:PublishSingleFile=false --self-contained true -c Release -o ../publish/osx-x64
|
||||||
|
|
||||||
|
|
||||||
|
echo "Building linux-x64 self-contained"
|
||||||
|
dotnet publish -r linux-x64 -p:PublishSingleFile=true --self-contained true -c Release -o ../publish/linux-x64-selfcontained
|
||||||
|
|
||||||
|
echo "Building win-x64 self-contained"
|
||||||
|
dotnet publish -r win-x64 -p:PublishSingleFile=true --self-contained true -c Release -o ../publish/win-x64-selfcontained
|
||||||
|
|
||||||
|
echo "Building osx-x64 self-contained"
|
||||||
|
dotnet publish -r osx-x64 -p:PublishSingleFile=true --self-contained true -c Release -o ../publish/osx-x64-selfcontained
|
||||||
|
|
||||||
|
echo "Zipping..."
|
||||||
|
mkdir ../publish/zip
|
||||||
|
|
||||||
|
|
||||||
|
zip -r ../publish/zip/linux-x64.zip ../publish/linux-x64
|
||||||
|
zip -r ../publish/zip/win-x64.zip ../publish/win-x64
|
||||||
|
zip -r ../publish/zip/osx-x64.zip ../publish/osx-x64
|
||||||
|
|
||||||
|
zip -r ../publish/zip/linux-x64-selfcontained.zip ../publish/linux-x64-selfcontained
|
||||||
|
zip -r ../publish/zip/win-x64-selfcontained.zip ../publish/win-x64-selfcontained
|
||||||
|
zip -r ../publish/zip/osx-x64-selfcontained.zip ../publish/osx-x64-selfcontained
|
||||||
|
|
||||||
|
echo "Done!"
|
||||||
17
DiscordBotUI/DiscordBotUI/App.axaml
Normal file
17
DiscordBotUI/DiscordBotUI/App.axaml
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
<Application xmlns="https://github.com/avaloniaui"
|
||||||
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||||
|
xmlns:local="using:DiscordBotUI"
|
||||||
|
x:Class="DiscordBotUI.App"
|
||||||
|
RequestedThemeVariant="Default">
|
||||||
|
<!-- "Default" ThemeVariant follows system theme variant. "Dark" or "Light" are other available options. -->
|
||||||
|
|
||||||
|
<Application.DataTemplates>
|
||||||
|
<local:ViewLocator/>
|
||||||
|
</Application.DataTemplates>
|
||||||
|
|
||||||
|
|
||||||
|
<Application.Styles>
|
||||||
|
<FluentTheme />
|
||||||
|
<StyleInclude Source="avares://Avalonia.Controls.DataGrid/Themes/Fluent.xaml"/>
|
||||||
|
</Application.Styles>
|
||||||
|
</Application>
|
||||||
31
DiscordBotUI/DiscordBotUI/App.axaml.cs
Normal file
31
DiscordBotUI/DiscordBotUI/App.axaml.cs
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
using Avalonia;
|
||||||
|
using Avalonia.Controls.ApplicationLifetimes;
|
||||||
|
using Avalonia.Markup.Xaml;
|
||||||
|
|
||||||
|
using DiscordBotUI.ViewModels;
|
||||||
|
using DiscordBotUI.Views;
|
||||||
|
|
||||||
|
namespace DiscordBotUI
|
||||||
|
{
|
||||||
|
public partial class App : Application
|
||||||
|
{
|
||||||
|
public override void Initialize()
|
||||||
|
{
|
||||||
|
AvaloniaXamlLoader.Load(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void OnFrameworkInitializationCompleted()
|
||||||
|
{
|
||||||
|
if (ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop)
|
||||||
|
{
|
||||||
|
desktop.MainWindow = new HomePage();
|
||||||
|
}
|
||||||
|
else if (ApplicationLifetime is ISingleViewApplicationLifetime singleViewPlatform)
|
||||||
|
{
|
||||||
|
singleViewPlatform.MainView = new HomePage();
|
||||||
|
}
|
||||||
|
|
||||||
|
base.OnFrameworkInitializationCompleted();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
BIN
DiscordBotUI/DiscordBotUI/Assets/avalonia-logo.ico
Normal file
BIN
DiscordBotUI/DiscordBotUI/Assets/avalonia-logo.ico
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 172 KiB |
90
DiscordBotUI/DiscordBotUI/Bot/Commands/Help.cs
Normal file
90
DiscordBotUI/DiscordBotUI/Bot/Commands/Help.cs
Normal file
@@ -0,0 +1,90 @@
|
|||||||
|
using System.Collections.Generic;
|
||||||
|
using Discord;
|
||||||
|
using PluginManager;
|
||||||
|
using PluginManager.Interfaces;
|
||||||
|
using PluginManager.Loaders;
|
||||||
|
using PluginManager.Others;
|
||||||
|
|
||||||
|
namespace DiscordBotUI.Bot.Commands;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The help command
|
||||||
|
/// </summary>
|
||||||
|
internal class Help: DBCommand
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Command name
|
||||||
|
/// </summary>
|
||||||
|
public string Command => "help";
|
||||||
|
|
||||||
|
public List<string> Aliases => null;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Command Description
|
||||||
|
/// </summary>
|
||||||
|
public string Description => "This command allows you to check all loaded commands";
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Command usage
|
||||||
|
/// </summary>
|
||||||
|
public string Usage => "help <command>";
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Check if the command require administrator to be executed
|
||||||
|
/// </summary>
|
||||||
|
public bool requireAdmin => false;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The main body of the command
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="context">The command context</param>
|
||||||
|
public void ExecuteServer(DbCommandExecutingArguments args)
|
||||||
|
{
|
||||||
|
if (args.arguments is not null)
|
||||||
|
{
|
||||||
|
var e = GenerateHelpCommand(args.arguments[0]);
|
||||||
|
if (e is null)
|
||||||
|
args.context.Channel.SendMessageAsync("Unknown Command " + args.arguments[0]);
|
||||||
|
else
|
||||||
|
args.context.Channel.SendMessageAsync(embed: e.Build());
|
||||||
|
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var embedBuilder = new EmbedBuilder();
|
||||||
|
|
||||||
|
var adminCommands = "";
|
||||||
|
var normalCommands = "";
|
||||||
|
|
||||||
|
foreach (var cmd in PluginLoader.Commands)
|
||||||
|
if (cmd.requireAdmin)
|
||||||
|
adminCommands += cmd.Command + " ";
|
||||||
|
else
|
||||||
|
normalCommands += cmd.Command + " ";
|
||||||
|
|
||||||
|
|
||||||
|
if (adminCommands.Length > 0)
|
||||||
|
embedBuilder.AddField("Admin Commands", adminCommands);
|
||||||
|
if (normalCommands.Length > 0)
|
||||||
|
embedBuilder.AddField("Normal Commands", normalCommands);
|
||||||
|
args.context.Channel.SendMessageAsync(embed: embedBuilder.Build());
|
||||||
|
}
|
||||||
|
|
||||||
|
private EmbedBuilder GenerateHelpCommand(string command)
|
||||||
|
{
|
||||||
|
var embedBuilder = new EmbedBuilder();
|
||||||
|
var cmd = PluginLoader.Commands.Find(p => p.Command == command ||
|
||||||
|
p.Aliases is not null && p.Aliases.Contains(command)
|
||||||
|
);
|
||||||
|
if (cmd == null) return null;
|
||||||
|
|
||||||
|
embedBuilder.AddField("Usage", Config.AppSettings["prefix"] + cmd.Usage);
|
||||||
|
embedBuilder.AddField("Description", cmd.Description);
|
||||||
|
if (cmd.Aliases is null)
|
||||||
|
return embedBuilder;
|
||||||
|
embedBuilder.AddField("Alias", cmd.Aliases.Count == 0 ? "-" : string.Join(", ", cmd.Aliases));
|
||||||
|
|
||||||
|
return embedBuilder;
|
||||||
|
}
|
||||||
|
}
|
||||||
83
DiscordBotUI/DiscordBotUI/Bot/DiscordBot.cs
Normal file
83
DiscordBotUI/DiscordBotUI/Bot/DiscordBot.cs
Normal file
@@ -0,0 +1,83 @@
|
|||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
using PluginManager;
|
||||||
|
using PluginManager.Interfaces;
|
||||||
|
using PluginManager.Loaders;
|
||||||
|
using PluginManager.Others;
|
||||||
|
|
||||||
|
namespace DiscordBotUI.Bot
|
||||||
|
{
|
||||||
|
internal class DiscordBot
|
||||||
|
{
|
||||||
|
private readonly string[] _StartArguments;
|
||||||
|
|
||||||
|
public DiscordBot(string[] args)
|
||||||
|
{
|
||||||
|
this._StartArguments = args;
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task InitializeBot()
|
||||||
|
{
|
||||||
|
string token = Config.AppSettings["token"];
|
||||||
|
string prefix = Config.AppSettings["prefix"];
|
||||||
|
PluginManager.Bot.Boot discordBooter = new PluginManager.Bot.Boot(token, prefix);
|
||||||
|
await discordBooter.Awake();
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task LoadPlugins()
|
||||||
|
{
|
||||||
|
var loader = new PluginLoader(Config.DiscordBot.Client);
|
||||||
|
|
||||||
|
loader.OnCommandLoaded += (data) =>
|
||||||
|
{
|
||||||
|
if (data.IsSuccess)
|
||||||
|
{
|
||||||
|
Config.Logger.Log("Successfully loaded command : " + data.PluginName, typeof(ICommandAction),
|
||||||
|
LogType.INFO
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Config.Logger.Log("Failed to load command : " + data.PluginName + " because " + data.ErrorMessage,
|
||||||
|
typeof(ICommandAction), LogType.ERROR
|
||||||
|
);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
loader.OnEventLoaded += (data) =>
|
||||||
|
{
|
||||||
|
if (data.IsSuccess)
|
||||||
|
{
|
||||||
|
Config.Logger.Log("Successfully loaded event : " + data.PluginName, typeof(ICommandAction),
|
||||||
|
LogType.INFO
|
||||||
|
);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Config.Logger.Log("Failed to load event : " + data.PluginName + " because " + data.ErrorMessage,
|
||||||
|
typeof(ICommandAction), LogType.ERROR
|
||||||
|
);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
loader.OnSlashCommandLoaded += (data) =>
|
||||||
|
{
|
||||||
|
if (data.IsSuccess)
|
||||||
|
{
|
||||||
|
Config.Logger.Log("Successfully loaded slash command : " + data.PluginName, typeof(ICommandAction),
|
||||||
|
LogType.INFO
|
||||||
|
);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Config.Logger.Log("Failed to load slash command : " + data.PluginName + " because " + data.ErrorMessage,
|
||||||
|
typeof(ICommandAction), LogType.ERROR
|
||||||
|
);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
await loader.LoadPlugins();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
25
DiscordBotUI/DiscordBotUI/DiscordBotUI.csproj
Normal file
25
DiscordBotUI/DiscordBotUI/DiscordBotUI.csproj
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
<PropertyGroup>
|
||||||
|
<TargetFramework>net8.0</TargetFramework>
|
||||||
|
<Nullable>enable</Nullable>
|
||||||
|
<LangVersion>latest</LangVersion>
|
||||||
|
<AvaloniaUseCompiledBindingsByDefault>true</AvaloniaUseCompiledBindingsByDefault>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<AvaloniaResource Include="Assets\**" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<PackageReference Include="Avalonia" Version="11.0.10" />
|
||||||
|
<PackageReference Include="Avalonia.Themes.Fluent" Version="11.0.10" />
|
||||||
|
<PackageReference Include="Avalonia.Fonts.Inter" Version="11.0.10" />
|
||||||
|
<PackageReference Include="Avalonia.ReactiveUI" Version="11.0.10" />
|
||||||
|
<!--Condition below is needed to remove Avalonia.Diagnostics package from build output in Release configuration.-->
|
||||||
|
<PackageReference Condition="'$(Configuration)' == 'Debug'" Include="Avalonia.Diagnostics" Version="11.0.10" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<ProjectReference Include="..\..\PluginManager\PluginManager.csproj" />
|
||||||
|
</ItemGroup>
|
||||||
|
</Project>
|
||||||
33
DiscordBotUI/DiscordBotUI/ViewLocator.cs
Normal file
33
DiscordBotUI/DiscordBotUI/ViewLocator.cs
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
using System;
|
||||||
|
|
||||||
|
using Avalonia.Controls;
|
||||||
|
using Avalonia.Controls.Templates;
|
||||||
|
|
||||||
|
using DiscordBotUI.ViewModels;
|
||||||
|
|
||||||
|
namespace DiscordBotUI
|
||||||
|
{
|
||||||
|
public class ViewLocator : IDataTemplate
|
||||||
|
{
|
||||||
|
public Control? Build(object? data)
|
||||||
|
{
|
||||||
|
if (data is null)
|
||||||
|
return null;
|
||||||
|
|
||||||
|
var name = data.GetType().FullName!.Replace("ViewModel", "View", StringComparison.Ordinal);
|
||||||
|
var type = Type.GetType(name);
|
||||||
|
|
||||||
|
if (type != null)
|
||||||
|
{
|
||||||
|
return (Control)Activator.CreateInstance(type)!;
|
||||||
|
}
|
||||||
|
|
||||||
|
return new TextBlock { Text = "Not Found: " + name };
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool Match(object? data)
|
||||||
|
{
|
||||||
|
return data is ViewModelBase;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
22
DiscordBotUI/DiscordBotUI/ViewModels/OnlinePlugin.cs
Normal file
22
DiscordBotUI/DiscordBotUI/ViewModels/OnlinePlugin.cs
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace DiscordBotUI.ViewModels
|
||||||
|
{
|
||||||
|
public class OnlinePlugin
|
||||||
|
{
|
||||||
|
public string Name { get; set; }
|
||||||
|
public string Description { get; set; }
|
||||||
|
public string Version { get; set; }
|
||||||
|
|
||||||
|
public OnlinePlugin(string name, string description, string version) {
|
||||||
|
Name = name;
|
||||||
|
Description = description;
|
||||||
|
Version = version;
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
22
DiscordBotUI/DiscordBotUI/ViewModels/Plugin.cs
Normal file
22
DiscordBotUI/DiscordBotUI/ViewModels/Plugin.cs
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace DiscordBotUI.ViewModels
|
||||||
|
{
|
||||||
|
public class Plugin
|
||||||
|
{
|
||||||
|
public string Name { get; set; }
|
||||||
|
public string Version { get; set; }
|
||||||
|
public bool IsMarkedToUninstall { get; set; }
|
||||||
|
|
||||||
|
public Plugin(string Name, string Version, bool isMarkedToUninstall)
|
||||||
|
{
|
||||||
|
this.Name = Name;
|
||||||
|
this.Version = Version;
|
||||||
|
IsMarkedToUninstall = isMarkedToUninstall;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
11
DiscordBotUI/DiscordBotUI/ViewModels/ViewModelBase.cs
Normal file
11
DiscordBotUI/DiscordBotUI/ViewModels/ViewModelBase.cs
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
using System.ComponentModel;
|
||||||
|
using System.Runtime.CompilerServices;
|
||||||
|
|
||||||
|
using ReactiveUI;
|
||||||
|
|
||||||
|
namespace DiscordBotUI.ViewModels
|
||||||
|
{
|
||||||
|
public class ViewModelBase : ReactiveObject
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
41
DiscordBotUI/DiscordBotUI/Views/HomePage.axaml
Normal file
41
DiscordBotUI/DiscordBotUI/Views/HomePage.axaml
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
<Window xmlns="https://github.com/avaloniaui"
|
||||||
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||||
|
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||||
|
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||||
|
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
|
||||||
|
x:Class="DiscordBotUI.Views.HomePage"
|
||||||
|
Title="HomePage" MinWidth="900" MinHeight="500">
|
||||||
|
|
||||||
|
<DockPanel LastChildFill="True">
|
||||||
|
<Menu DockPanel.Dock="Top">
|
||||||
|
<MenuItem Header="Settings" Click="SettingsMenuClick"></MenuItem>
|
||||||
|
<MenuItem Header="Installed Plugins" Click="PluginsMenuClick"></MenuItem>
|
||||||
|
<MenuItem Header="New Plugins" Click="NewPluginsMenuClick"></MenuItem>
|
||||||
|
</Menu>
|
||||||
|
|
||||||
|
<Border Width="500" BorderBrush="Black" BorderThickness="1" DockPanel.Dock="Right">
|
||||||
|
<RelativePanel Margin="10">
|
||||||
|
<Label Content="Bot Token: " Name="labelToken" RelativePanel.AlignTopWithPanel="True"/>
|
||||||
|
<TextBox Name="textBoxToken" Text="" IsReadOnly="True" RelativePanel.AlignRightWithPanel="True" Width="350" />
|
||||||
|
|
||||||
|
<Label Content="Bot Prefix: " Name="labelPrefix" RelativePanel.Below="labelToken" Margin="0,20,0,0"/>
|
||||||
|
<TextBox Name="textBoxPrefix" Text="" RelativePanel.AlignRightWithPanel="True" RelativePanel.Below="textBoxToken"
|
||||||
|
IsReadOnly="True" Margin="0,10,0,0" Width="350" />
|
||||||
|
|
||||||
|
<Label Content="Server Id: " Name="labelServerId" RelativePanel.Below="labelPrefix" Margin="0,20,0,0"/>
|
||||||
|
<TextBox Name="textBoxServerId" Text="" RelativePanel.AlignRightWithPanel="True"
|
||||||
|
IsReadOnly="True" RelativePanel.Below="textBoxPrefix" Margin="0,10,0,0" Width="350" />
|
||||||
|
|
||||||
|
<Button Click="ButtonStartBotClick" Name="buttonStartBot" Content="Start" RelativePanel.AlignBottomWithPanel="True" Margin="0,-100,0,0"
|
||||||
|
Width="120" Height="40" Background="#FF008CFF" Foreground="White" BorderThickness="0" CornerRadius="5" FontWeight="Bold"
|
||||||
|
RelativePanel.AlignHorizontalCenterWithPanel="True" />
|
||||||
|
</RelativePanel>
|
||||||
|
|
||||||
|
</Border>
|
||||||
|
|
||||||
|
<Border Background="White" BorderBrush="Black" BorderThickness="1">
|
||||||
|
<TextBlock Name="logTextBlock" Foreground="Black" Text="" />
|
||||||
|
</Border>
|
||||||
|
</DockPanel>
|
||||||
|
|
||||||
|
</Window>
|
||||||
80
DiscordBotUI/DiscordBotUI/Views/HomePage.axaml.cs
Normal file
80
DiscordBotUI/DiscordBotUI/Views/HomePage.axaml.cs
Normal file
@@ -0,0 +1,80 @@
|
|||||||
|
using System;
|
||||||
|
|
||||||
|
using Avalonia;
|
||||||
|
using Avalonia.Controls;
|
||||||
|
using Avalonia.Markup.Xaml;
|
||||||
|
using Avalonia.Threading;
|
||||||
|
|
||||||
|
using DiscordBotUI.Bot;
|
||||||
|
|
||||||
|
using PluginManager;
|
||||||
|
using PluginManager.Others.Logger;
|
||||||
|
|
||||||
|
namespace DiscordBotUI.Views;
|
||||||
|
|
||||||
|
public partial class HomePage : Window
|
||||||
|
{
|
||||||
|
private readonly DiscordBot _DiscordBot;
|
||||||
|
|
||||||
|
public HomePage()
|
||||||
|
{
|
||||||
|
InitializeComponent();
|
||||||
|
_DiscordBot = new DiscordBot(null!);
|
||||||
|
|
||||||
|
Loaded += HomePage_Loaded;
|
||||||
|
}
|
||||||
|
|
||||||
|
private async void HomePage_Loaded(object? sender, Avalonia.Interactivity.RoutedEventArgs e)
|
||||||
|
{
|
||||||
|
await Config.Initialize();
|
||||||
|
|
||||||
|
if(!Config.AppSettings.ContainsAllKeys("token", "prefix"))
|
||||||
|
{
|
||||||
|
await new SettingsPage().ShowDialog(this);
|
||||||
|
|
||||||
|
if (string.IsNullOrWhiteSpace(Config.AppSettings["token"]) || string.IsNullOrWhiteSpace(Config.AppSettings["prefix"]))
|
||||||
|
Environment.Exit(-1);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
textBoxToken.Text = Config.AppSettings["token"];
|
||||||
|
textBoxPrefix.Text = Config.AppSettings["prefix"];
|
||||||
|
textBoxServerId.Text = Config.AppSettings["ServerID"];
|
||||||
|
}
|
||||||
|
|
||||||
|
private void SetTextToTB(Log logMessage)
|
||||||
|
{
|
||||||
|
logTextBlock.Text += $"[{logMessage.Type}] [{logMessage.ThrowTime.ToShortTimeString()}] {logMessage.Message}\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
private async void ButtonStartBotClick(object? sender, Avalonia.Interactivity.RoutedEventArgs e)
|
||||||
|
{
|
||||||
|
|
||||||
|
Config.Logger.OnLog += async (sender, logMessage) =>
|
||||||
|
{
|
||||||
|
await Dispatcher.UIThread.InvokeAsync(() => SetTextToTB(logMessage), DispatcherPriority.Background);
|
||||||
|
};
|
||||||
|
|
||||||
|
await _DiscordBot.InitializeBot();
|
||||||
|
|
||||||
|
await _DiscordBot.LoadPlugins();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private async void SettingsMenuClick(object? sender, Avalonia.Interactivity.RoutedEventArgs e)
|
||||||
|
{
|
||||||
|
//await new SettingsPage().ShowDialog(this);
|
||||||
|
new SettingsPage().Show();
|
||||||
|
}
|
||||||
|
|
||||||
|
private async void PluginsMenuClick(object? sender, Avalonia.Interactivity.RoutedEventArgs e)
|
||||||
|
{
|
||||||
|
//await new PluginsPage().ShowDialog(this);
|
||||||
|
new PluginsPage().Show();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void NewPluginsMenuClick(object? sender, Avalonia.Interactivity.RoutedEventArgs e)
|
||||||
|
{
|
||||||
|
new PluginInstaller().Show();
|
||||||
|
}
|
||||||
|
}
|
||||||
33
DiscordBotUI/DiscordBotUI/Views/PluginInstaller.axaml
Normal file
33
DiscordBotUI/DiscordBotUI/Views/PluginInstaller.axaml
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
<Window xmlns="https://github.com/avaloniaui"
|
||||||
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||||
|
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||||
|
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||||
|
xmlns:views="clr-namespace:DiscordBotUI.Views;assembly=DiscordBotUI"
|
||||||
|
xmlns:viewmodels="using:DiscordBotUI.ViewModels"
|
||||||
|
mc:Ignorable="d" d:DesignWidth="600" d:DesignHeight="300"
|
||||||
|
x:Class="DiscordBotUI.Views.PluginInstaller"
|
||||||
|
x:DataType="views:PluginInstaller"
|
||||||
|
Title="PluginInstaller"
|
||||||
|
Name="PluginInstallerWindow"
|
||||||
|
>
|
||||||
|
|
||||||
|
<DataGrid Name="dataGridInstallablePlugins" ItemsSource="{Binding Plugins}">
|
||||||
|
<DataGrid.Columns>
|
||||||
|
<DataGridTextColumn Header="Plugin Name" Foreground="Aquamarine" Binding="{Binding Name}"/>
|
||||||
|
<DataGridTextColumn Header="Plugin Version" Binding="{Binding Version}"/>
|
||||||
|
<DataGridTextColumn Header="Plugin Description" Binding="{Binding Description}" Width="*"/>
|
||||||
|
|
||||||
|
<DataGridTemplateColumn Header="Download">
|
||||||
|
<DataGridTemplateColumn.CellTemplate>
|
||||||
|
<DataTemplate DataType="viewmodels:OnlinePlugin">
|
||||||
|
<Button Content="Download"
|
||||||
|
VerticalAlignment="Center"
|
||||||
|
HorizontalAlignment="Center"
|
||||||
|
Command="{Binding InstallPlugin, RelativeSource={RelativeSource AncestorType=views:PluginInstaller}}"
|
||||||
|
CommandParameter="{Binding Name}"/>
|
||||||
|
</DataTemplate>
|
||||||
|
</DataGridTemplateColumn.CellTemplate>
|
||||||
|
</DataGridTemplateColumn>
|
||||||
|
</DataGrid.Columns>
|
||||||
|
</DataGrid>
|
||||||
|
</Window>
|
||||||
62
DiscordBotUI/DiscordBotUI/Views/PluginInstaller.axaml.cs
Normal file
62
DiscordBotUI/DiscordBotUI/Views/PluginInstaller.axaml.cs
Normal file
@@ -0,0 +1,62 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Collections.ObjectModel;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Windows.Input;
|
||||||
|
|
||||||
|
using Avalonia.Controls;
|
||||||
|
using Avalonia.Interactivity;
|
||||||
|
using Avalonia.Markup.Xaml.Templates;
|
||||||
|
using Avalonia.Media;
|
||||||
|
|
||||||
|
using DiscordBotUI.ViewModels;
|
||||||
|
|
||||||
|
using PluginManager;
|
||||||
|
using PluginManager.Plugin;
|
||||||
|
|
||||||
|
namespace DiscordBotUI.Views;
|
||||||
|
|
||||||
|
public partial class PluginInstaller : Window
|
||||||
|
{
|
||||||
|
|
||||||
|
public ObservableCollection<OnlinePlugin> Plugins { get; private set; }
|
||||||
|
|
||||||
|
public PluginInstaller()
|
||||||
|
{
|
||||||
|
InitializeComponent();
|
||||||
|
Loaded += OnPageLoaded;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private async void OnPageLoaded(object? sender, RoutedEventArgs e)
|
||||||
|
{
|
||||||
|
if (Config.PluginsManager is null) return;
|
||||||
|
|
||||||
|
List<PluginOnlineInfo>? onlineInfos = await Config.PluginsManager.GetPluginsList();
|
||||||
|
|
||||||
|
if(onlineInfos is null) return;
|
||||||
|
|
||||||
|
List<OnlinePlugin> plugins = new List<OnlinePlugin>();
|
||||||
|
|
||||||
|
foreach(PluginOnlineInfo onlinePlugin in onlineInfos)
|
||||||
|
{
|
||||||
|
plugins.Add(new OnlinePlugin(onlinePlugin.Name, onlinePlugin.Description, onlinePlugin.Version.ToShortString()));
|
||||||
|
}
|
||||||
|
|
||||||
|
Plugins = new ObservableCollection<OnlinePlugin>(plugins);
|
||||||
|
|
||||||
|
dataGridInstallablePlugins.ItemsSource = Plugins;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public async void InstallPlugin(string name)
|
||||||
|
{
|
||||||
|
|
||||||
|
PluginOnlineInfo? info = await Config.PluginsManager.GetPluginDataByName(name);
|
||||||
|
if(info is null) return;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
await Config.PluginsManager.InstallPlugin(info, null);
|
||||||
|
}
|
||||||
|
}
|
||||||
25
DiscordBotUI/DiscordBotUI/Views/PluginsPage.axaml
Normal file
25
DiscordBotUI/DiscordBotUI/Views/PluginsPage.axaml
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
<Window xmlns="https://github.com/avaloniaui"
|
||||||
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||||
|
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||||
|
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||||
|
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
|
||||||
|
xmlns:model ="clr-namespace:DiscordBotUI.Views;assembly=DiscordBotUI"
|
||||||
|
x:Class="DiscordBotUI.Views.PluginsPage"
|
||||||
|
Title="Plugins Page"
|
||||||
|
x:DataType="model:PluginsPage">
|
||||||
|
|
||||||
|
|
||||||
|
<DataGrid Name="dataGridPlugins" Margin="20" ItemsSource="{Binding Plugins}"
|
||||||
|
IsReadOnly="False"
|
||||||
|
CanUserSortColumns="False"
|
||||||
|
GridLinesVisibility="All"
|
||||||
|
AutoGenerateColumns="False"
|
||||||
|
BorderThickness="1" BorderBrush="Gray">
|
||||||
|
|
||||||
|
<DataGrid.Columns>
|
||||||
|
<DataGridTextColumn Header="Plugin Name" Foreground="Aquamarine" Binding="{Binding Name}"/>
|
||||||
|
<DataGridTextColumn Header="Plugin Version" Binding="{Binding Version}"/>
|
||||||
|
<DataGridCheckBoxColumn Header="Is Marked for Uninstall" Binding="{Binding IsMarkedToUninstall}"/>
|
||||||
|
</DataGrid.Columns>
|
||||||
|
</DataGrid>
|
||||||
|
</Window>
|
||||||
43
DiscordBotUI/DiscordBotUI/Views/PluginsPage.axaml.cs
Normal file
43
DiscordBotUI/DiscordBotUI/Views/PluginsPage.axaml.cs
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Collections.ObjectModel;
|
||||||
|
|
||||||
|
using Avalonia.Controls;
|
||||||
|
using Avalonia.Interactivity;
|
||||||
|
|
||||||
|
using DiscordBotUI.ViewModels;
|
||||||
|
|
||||||
|
using PluginManager;
|
||||||
|
|
||||||
|
namespace DiscordBotUI.Views;
|
||||||
|
|
||||||
|
|
||||||
|
public partial class PluginsPage: Window
|
||||||
|
{
|
||||||
|
|
||||||
|
public ObservableCollection<Plugin> Plugins { get; private set; }
|
||||||
|
|
||||||
|
public PluginsPage()
|
||||||
|
{
|
||||||
|
InitializeComponent();
|
||||||
|
Loaded += OnPageLoaded;
|
||||||
|
}
|
||||||
|
|
||||||
|
private async void OnPageLoaded(object? sender, RoutedEventArgs e)
|
||||||
|
{
|
||||||
|
if (Config.PluginsManager is null) return;
|
||||||
|
|
||||||
|
var plugins = await Config.PluginsManager.GetInstalledPlugins();
|
||||||
|
var localList = new List<Plugin>();
|
||||||
|
foreach (var plugin in plugins)
|
||||||
|
{
|
||||||
|
localList.Add(new Plugin(plugin.PluginName, plugin.PluginVersion.ToShortString(), plugin.IsMarkedToUninstall));
|
||||||
|
}
|
||||||
|
|
||||||
|
Plugins = new ObservableCollection<Plugin>(localList);
|
||||||
|
|
||||||
|
|
||||||
|
dataGridPlugins.ItemsSource = Plugins;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
26
DiscordBotUI/DiscordBotUI/Views/SettingsPage.axaml
Normal file
26
DiscordBotUI/DiscordBotUI/Views/SettingsPage.axaml
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
<Window xmlns="https://github.com/avaloniaui"
|
||||||
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||||
|
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||||
|
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||||
|
mc:Ignorable="d" d:DesignWidth="500" d:DesignHeight="200"
|
||||||
|
x:Class="DiscordBotUI.Views.SettingsPage"
|
||||||
|
Title="SettingsPage" Width="500" Height="200" MinWidth="500" MaxWidth="500" MinHeight="200" MaxHeight="200">
|
||||||
|
<RelativePanel Margin="10,10,10,0">
|
||||||
|
<Label Content="Bot Token: " Name="labelToken" RelativePanel.AlignTopWithPanel="True"/>
|
||||||
|
<TextBox Name="textBoxToken" Text="" IsReadOnly="False" RelativePanel.AlignRightWithPanel="True" Width="350" />
|
||||||
|
|
||||||
|
<Label Content="Bot Prefix: " Name="labelPrefix" RelativePanel.Below="labelToken" Margin="0,20,0,0"/>
|
||||||
|
<TextBox Name="textBoxPrefix" Text="" RelativePanel.AlignRightWithPanel="True" RelativePanel.Below="textBoxToken"
|
||||||
|
IsReadOnly="False" Margin="0,10,0,0" Width="350" />
|
||||||
|
|
||||||
|
<Label Content="Server Id: " Name="labelServerId" RelativePanel.Below="labelPrefix" Margin="0,20,0,0"/>
|
||||||
|
<TextBox Name="textBoxServerId" Text="" RelativePanel.AlignRightWithPanel="True"
|
||||||
|
IsReadOnly="False" RelativePanel.Below="textBoxPrefix" Margin="0,10,0,0" Width="350" />
|
||||||
|
|
||||||
|
<Label Name="labelErrorMessage" Foreground="Red" RelativePanel.Below="textBoxServerId" />
|
||||||
|
|
||||||
|
<Button Name="buttonSaveSettings" Click="ButtonSaveSettingsClick" Content="Save" RelativePanel.AlignBottomWithPanel="True" Margin="0,-50,0,0"
|
||||||
|
Width="120" Height="40" Background="#FF008CFF" Foreground="White" BorderThickness="0" CornerRadius="5" FontWeight="Bold"
|
||||||
|
RelativePanel.AlignHorizontalCenterWithPanel="True" />
|
||||||
|
</RelativePanel>
|
||||||
|
</Window>
|
||||||
44
DiscordBotUI/DiscordBotUI/Views/SettingsPage.axaml.cs
Normal file
44
DiscordBotUI/DiscordBotUI/Views/SettingsPage.axaml.cs
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
using Avalonia.Controls;
|
||||||
|
|
||||||
|
using PluginManager;
|
||||||
|
|
||||||
|
namespace DiscordBotUI.Views;
|
||||||
|
|
||||||
|
public partial class SettingsPage : Window
|
||||||
|
{
|
||||||
|
public SettingsPage()
|
||||||
|
{
|
||||||
|
InitializeComponent();
|
||||||
|
}
|
||||||
|
|
||||||
|
private async void ButtonSaveSettingsClick(object? sender, Avalonia.Interactivity.RoutedEventArgs e)
|
||||||
|
{
|
||||||
|
string token = textBoxToken.Text;
|
||||||
|
string botPrefix = textBoxPrefix.Text;
|
||||||
|
string serverId = textBoxServerId.Text;
|
||||||
|
|
||||||
|
if (string.IsNullOrWhiteSpace(serverId)) serverId = string.Empty;
|
||||||
|
if (string.IsNullOrWhiteSpace(token))
|
||||||
|
{
|
||||||
|
labelErrorMessage.Content = "The token is invalid";
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(string.IsNullOrWhiteSpace(botPrefix) || botPrefix.Length > 1 || botPrefix.Length < 1)
|
||||||
|
{
|
||||||
|
labelErrorMessage.Content = "The prefix is invalid";
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Config.AppSettings.Add("token", token);
|
||||||
|
Config.AppSettings.Add("prefix", botPrefix);
|
||||||
|
Config.AppSettings.Add("ServerID", serverId);
|
||||||
|
|
||||||
|
await Config.AppSettings.SaveToFile();
|
||||||
|
|
||||||
|
Config.Logger.Log("Config Saved");
|
||||||
|
|
||||||
|
Close();
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,62 +0,0 @@
|
|||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.IO;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
public class Core
|
|
||||||
{
|
|
||||||
|
|
||||||
public static Dictionary<ulong, string> playerMessages = new Dictionary<ulong, string>();
|
|
||||||
|
|
||||||
private static readonly string folder = @".\Data\Resources\LevelingSystem\";
|
|
||||||
|
|
||||||
public static int GetLevel(ulong id) => int.Parse(File.ReadAllText(Path.Combine(folder, id.ToString() + ".data")).Split(',')[0].Split('=')[1]);
|
|
||||||
|
|
||||||
|
|
||||||
public static Int64 GetExp(ulong id) => Int64.Parse(File.ReadAllText(Path.Combine(folder, id.ToString() + ".data")).Split(',')[1].Split('=')[1]);
|
|
||||||
|
|
||||||
|
|
||||||
public static Int64 GetReqEXP(ulong id) => Int64.Parse(File.ReadAllText(Path.Combine(folder, id.ToString() + ".data")).Split(',')[2].Split('=')[1]);
|
|
||||||
public static void SaveData(ulong id, int lv, Int64 cexp, Int64 rexp)
|
|
||||||
{
|
|
||||||
Directory.CreateDirectory(folder);
|
|
||||||
File.WriteAllText(Path.Combine(folder, id.ToString() + ".data"), $"Level={lv},EXP={cexp},REXP={rexp}");
|
|
||||||
}
|
|
||||||
private static Int64 NextLevelXP(int level)
|
|
||||||
{
|
|
||||||
return (level * level) + 2 * level + 75;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static (bool, int) MessageSent(ulong id, int messageLength)
|
|
||||||
{
|
|
||||||
WaitForTimeToRemoveFromList(id, 60);
|
|
||||||
|
|
||||||
if (!File.Exists(Path.Combine(folder, id.ToString() + ".data")))
|
|
||||||
{
|
|
||||||
SaveData(id, 0, 0, 0);
|
|
||||||
}
|
|
||||||
Int64 cEXp = GetExp(id);
|
|
||||||
Int64 rExp = GetReqEXP(id);
|
|
||||||
int random = new System.Random().Next(3, 6) + messageLength;
|
|
||||||
cEXp += random;
|
|
||||||
if (cEXp >= rExp)
|
|
||||||
{
|
|
||||||
cEXp = cEXp - rExp;
|
|
||||||
int lv = GetLevel(id);
|
|
||||||
rExp = NextLevelXP(lv);
|
|
||||||
lv++;
|
|
||||||
SaveData(id, lv, cEXp, rExp);
|
|
||||||
return (true, lv);
|
|
||||||
}
|
|
||||||
|
|
||||||
SaveData(id, GetLevel(id), cEXp, rExp);
|
|
||||||
return (false, -1);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static async void WaitForTimeToRemoveFromList(ulong id, int time_seconds)
|
|
||||||
{
|
|
||||||
await Task.Delay(time_seconds * 1000);
|
|
||||||
playerMessages.Remove(id);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user