Compare commits
32 Commits
v1.0.6-pre
...
v1.0.0.14
| Author | SHA1 | Date | |
|---|---|---|---|
| 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 |
4
.gitignore
vendored
4
.gitignore
vendored
@@ -364,3 +364,7 @@ MigrationBackup/
|
|||||||
FodyWeavers.xsd
|
FodyWeavers.xsd
|
||||||
|
|
||||||
*.txt
|
*.txt
|
||||||
|
|
||||||
|
#folders
|
||||||
|
/Plugins/
|
||||||
|
/DiscordBot.rar
|
||||||
|
|||||||
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_Utils/1.0.0": {
|
|
||||||
"dependencies": {
|
|
||||||
"PluginManager": "1.0.0"
|
|
||||||
},
|
|
||||||
"runtime": {
|
|
||||||
"CMD_Utils.dll": {}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Discord.Net/3.7.2": {
|
|
||||||
"dependencies": {
|
|
||||||
"Discord.Net.Commands": "3.7.2",
|
|
||||||
"Discord.Net.Core": "3.7.2",
|
|
||||||
"Discord.Net.Interactions": "3.7.2",
|
|
||||||
"Discord.Net.Rest": "3.7.2",
|
|
||||||
"Discord.Net.WebSocket": "3.7.2",
|
|
||||||
"Discord.Net.Webhook": "3.7.2"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Discord.Net.Commands/3.7.2": {
|
|
||||||
"dependencies": {
|
|
||||||
"Discord.Net.Core": "3.7.2"
|
|
||||||
},
|
|
||||||
"runtime": {
|
|
||||||
"lib/net6.0/Discord.Net.Commands.dll": {
|
|
||||||
"assemblyVersion": "3.7.2.0",
|
|
||||||
"fileVersion": "3.7.2.0"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Discord.Net.Core/3.7.2": {
|
|
||||||
"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.7.2.0",
|
|
||||||
"fileVersion": "3.7.2.0"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Discord.Net.Interactions/3.7.2": {
|
|
||||||
"dependencies": {
|
|
||||||
"Discord.Net.Core": "3.7.2",
|
|
||||||
"Discord.Net.Rest": "3.7.2",
|
|
||||||
"Discord.Net.WebSocket": "3.7.2",
|
|
||||||
"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.7.2.0",
|
|
||||||
"fileVersion": "3.7.2.0"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Discord.Net.Rest/3.7.2": {
|
|
||||||
"dependencies": {
|
|
||||||
"Discord.Net.Core": "3.7.2"
|
|
||||||
},
|
|
||||||
"runtime": {
|
|
||||||
"lib/net6.0/Discord.Net.Rest.dll": {
|
|
||||||
"assemblyVersion": "3.7.2.0",
|
|
||||||
"fileVersion": "3.7.2.0"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Discord.Net.Webhook/3.7.2": {
|
|
||||||
"dependencies": {
|
|
||||||
"Discord.Net.Core": "3.7.2",
|
|
||||||
"Discord.Net.Rest": "3.7.2"
|
|
||||||
},
|
|
||||||
"runtime": {
|
|
||||||
"lib/net6.0/Discord.Net.Webhook.dll": {
|
|
||||||
"assemblyVersion": "3.7.2.0",
|
|
||||||
"fileVersion": "3.7.2.0"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Discord.Net.WebSocket/3.7.2": {
|
|
||||||
"dependencies": {
|
|
||||||
"Discord.Net.Core": "3.7.2",
|
|
||||||
"Discord.Net.Rest": "3.7.2"
|
|
||||||
},
|
|
||||||
"runtime": {
|
|
||||||
"lib/net6.0/Discord.Net.WebSocket.dll": {
|
|
||||||
"assemblyVersion": "3.7.2.0",
|
|
||||||
"fileVersion": "3.7.2.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.7.2"
|
|
||||||
},
|
|
||||||
"runtime": {
|
|
||||||
"PluginManager.dll": {}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"libraries": {
|
|
||||||
"CMD_Utils/1.0.0": {
|
|
||||||
"type": "project",
|
|
||||||
"serviceable": false,
|
|
||||||
"sha512": ""
|
|
||||||
},
|
|
||||||
"Discord.Net/3.7.2": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-FAiCLGu5rp6+Z10FjKbbJ6LLpKjbMBGpozixkJlz5LZvuncPx8f4AWFAw7pBecKUuAh983qiZ8CZYZcNXsI4qg==",
|
|
||||||
"path": "discord.net/3.7.2",
|
|
||||||
"hashPath": "discord.net.3.7.2.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"Discord.Net.Commands/3.7.2": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-aOEGP04X64htsTr7ozKj9qHpmvOfitSw5gfR8Tw9TX0+FdswD2LNL2KfOAIaxRKZmRTm34aXQEJrVq0K8AptmQ==",
|
|
||||||
"path": "discord.net.commands/3.7.2",
|
|
||||||
"hashPath": "discord.net.commands.3.7.2.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"Discord.Net.Core/3.7.2": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-apwswc6LjN4dj3u27SO3Hr56Jzl91wzReahieoD7IQhV+BJQaRxhTRiEEWFTrBzHfeFHEOQ7r6vZnra3zeFhKA==",
|
|
||||||
"path": "discord.net.core/3.7.2",
|
|
||||||
"hashPath": "discord.net.core.3.7.2.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"Discord.Net.Interactions/3.7.2": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-dwGhEdDB0yyo/lGtjwIDVZmsuD52di7lIZWu/sBtvvA05dMgYZq5S6ILdsBXjOyaHeXd+EV4YMlj2VS/rm619w==",
|
|
||||||
"path": "discord.net.interactions/3.7.2",
|
|
||||||
"hashPath": "discord.net.interactions.3.7.2.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"Discord.Net.Rest/3.7.2": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-dyp8YaMBNJ837EH1KNz2PNGZqc2y71WFd1+pdldF+pLQJ3Gf/+V7685paAR7bQw7yFNyqEBR/QRBCNp+QIQ7Wg==",
|
|
||||||
"path": "discord.net.rest/3.7.2",
|
|
||||||
"hashPath": "discord.net.rest.3.7.2.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"Discord.Net.Webhook/3.7.2": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-da3i/mTq2y7mfj3xlHH14S4PivHbflJCVr8OUikJtQrxBOxvPkqP7ZYk3Y9S28q0K8qik+TUjCcjL5gELKrh/A==",
|
|
||||||
"path": "discord.net.webhook/3.7.2",
|
|
||||||
"hashPath": "discord.net.webhook.3.7.2.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"Discord.Net.WebSocket/3.7.2": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-pYCd6ET44ADaNiyEw82TaJnR7TKYHfrKCytWFWMPL5faJhoh260avZn3Hwunlf331lEQ0f4K1CujPkQbNuq7kQ==",
|
|
||||||
"path": "discord.net.websocket/3.7.2",
|
|
||||||
"hashPath": "discord.net.websocket.3.7.2.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,334 +0,0 @@
|
|||||||
{
|
|
||||||
"runtimeTarget": {
|
|
||||||
"name": ".NETCoreApp,Version=v6.0",
|
|
||||||
"signature": ""
|
|
||||||
},
|
|
||||||
"compilationOptions": {},
|
|
||||||
"targets": {
|
|
||||||
".NETCoreApp,Version=v6.0": {
|
|
||||||
"Music Commands/1.0.0": {
|
|
||||||
"dependencies": {
|
|
||||||
"PluginManager": "1.0.0",
|
|
||||||
"YoutubeExplode": "6.2.0"
|
|
||||||
},
|
|
||||||
"runtime": {
|
|
||||||
"Music Commands.dll": {}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"AngleSharp/0.17.0": {
|
|
||||||
"dependencies": {
|
|
||||||
"System.Buffers": "4.5.1",
|
|
||||||
"System.Text.Encoding.CodePages": "5.0.0"
|
|
||||||
},
|
|
||||||
"runtime": {
|
|
||||||
"lib/netstandard2.0/AngleSharp.dll": {
|
|
||||||
"assemblyVersion": "0.17.0.0",
|
|
||||||
"fileVersion": "0.17.0.0"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Discord.Net/3.7.2": {
|
|
||||||
"dependencies": {
|
|
||||||
"Discord.Net.Commands": "3.7.2",
|
|
||||||
"Discord.Net.Core": "3.7.2",
|
|
||||||
"Discord.Net.Interactions": "3.7.2",
|
|
||||||
"Discord.Net.Rest": "3.7.2",
|
|
||||||
"Discord.Net.WebSocket": "3.7.2",
|
|
||||||
"Discord.Net.Webhook": "3.7.2"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Discord.Net.Commands/3.7.2": {
|
|
||||||
"dependencies": {
|
|
||||||
"Discord.Net.Core": "3.7.2"
|
|
||||||
},
|
|
||||||
"runtime": {
|
|
||||||
"lib/net6.0/Discord.Net.Commands.dll": {
|
|
||||||
"assemblyVersion": "3.7.2.0",
|
|
||||||
"fileVersion": "3.7.2.0"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Discord.Net.Core/3.7.2": {
|
|
||||||
"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.7.2.0",
|
|
||||||
"fileVersion": "3.7.2.0"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Discord.Net.Interactions/3.7.2": {
|
|
||||||
"dependencies": {
|
|
||||||
"Discord.Net.Core": "3.7.2",
|
|
||||||
"Discord.Net.Rest": "3.7.2",
|
|
||||||
"Discord.Net.WebSocket": "3.7.2",
|
|
||||||
"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.7.2.0",
|
|
||||||
"fileVersion": "3.7.2.0"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Discord.Net.Rest/3.7.2": {
|
|
||||||
"dependencies": {
|
|
||||||
"Discord.Net.Core": "3.7.2"
|
|
||||||
},
|
|
||||||
"runtime": {
|
|
||||||
"lib/net6.0/Discord.Net.Rest.dll": {
|
|
||||||
"assemblyVersion": "3.7.2.0",
|
|
||||||
"fileVersion": "3.7.2.0"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Discord.Net.Webhook/3.7.2": {
|
|
||||||
"dependencies": {
|
|
||||||
"Discord.Net.Core": "3.7.2",
|
|
||||||
"Discord.Net.Rest": "3.7.2"
|
|
||||||
},
|
|
||||||
"runtime": {
|
|
||||||
"lib/net6.0/Discord.Net.Webhook.dll": {
|
|
||||||
"assemblyVersion": "3.7.2.0",
|
|
||||||
"fileVersion": "3.7.2.0"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Discord.Net.WebSocket/3.7.2": {
|
|
||||||
"dependencies": {
|
|
||||||
"Discord.Net.Core": "3.7.2",
|
|
||||||
"Discord.Net.Rest": "3.7.2"
|
|
||||||
},
|
|
||||||
"runtime": {
|
|
||||||
"lib/net6.0/Discord.Net.WebSocket.dll": {
|
|
||||||
"assemblyVersion": "3.7.2.0",
|
|
||||||
"fileVersion": "3.7.2.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"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Microsoft.NETCore.Platforms/5.0.0": {},
|
|
||||||
"Newtonsoft.Json/13.0.1": {
|
|
||||||
"runtime": {
|
|
||||||
"lib/netstandard2.0/Newtonsoft.Json.dll": {
|
|
||||||
"assemblyVersion": "13.0.0.0",
|
|
||||||
"fileVersion": "13.0.1.25517"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"System.Buffers/4.5.1": {},
|
|
||||||
"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.Text.Encoding.CodePages/5.0.0": {
|
|
||||||
"dependencies": {
|
|
||||||
"Microsoft.NETCore.Platforms": "5.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"System.ValueTuple/4.5.0": {},
|
|
||||||
"YoutubeExplode/6.2.0": {
|
|
||||||
"dependencies": {
|
|
||||||
"AngleSharp": "0.17.0"
|
|
||||||
},
|
|
||||||
"runtime": {
|
|
||||||
"lib/net5.0/YoutubeExplode.dll": {
|
|
||||||
"assemblyVersion": "6.2.0.0",
|
|
||||||
"fileVersion": "6.2.0.0"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"PluginManager/1.0.0": {
|
|
||||||
"dependencies": {
|
|
||||||
"Discord.Net": "3.7.2"
|
|
||||||
},
|
|
||||||
"runtime": {
|
|
||||||
"PluginManager.dll": {}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"libraries": {
|
|
||||||
"Music Commands/1.0.0": {
|
|
||||||
"type": "project",
|
|
||||||
"serviceable": false,
|
|
||||||
"sha512": ""
|
|
||||||
},
|
|
||||||
"AngleSharp/0.17.0": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-74haoXINcj4SdMsmiNzk+9VUwIX1U9P61O6AZd5Uao8SGNnJJB8Y/r8VJRc8orn4c7Vk/oURAKSNF9XcSDxbfA==",
|
|
||||||
"path": "anglesharp/0.17.0",
|
|
||||||
"hashPath": "anglesharp.0.17.0.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"Discord.Net/3.7.2": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-FAiCLGu5rp6+Z10FjKbbJ6LLpKjbMBGpozixkJlz5LZvuncPx8f4AWFAw7pBecKUuAh983qiZ8CZYZcNXsI4qg==",
|
|
||||||
"path": "discord.net/3.7.2",
|
|
||||||
"hashPath": "discord.net.3.7.2.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"Discord.Net.Commands/3.7.2": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-aOEGP04X64htsTr7ozKj9qHpmvOfitSw5gfR8Tw9TX0+FdswD2LNL2KfOAIaxRKZmRTm34aXQEJrVq0K8AptmQ==",
|
|
||||||
"path": "discord.net.commands/3.7.2",
|
|
||||||
"hashPath": "discord.net.commands.3.7.2.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"Discord.Net.Core/3.7.2": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-apwswc6LjN4dj3u27SO3Hr56Jzl91wzReahieoD7IQhV+BJQaRxhTRiEEWFTrBzHfeFHEOQ7r6vZnra3zeFhKA==",
|
|
||||||
"path": "discord.net.core/3.7.2",
|
|
||||||
"hashPath": "discord.net.core.3.7.2.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"Discord.Net.Interactions/3.7.2": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-dwGhEdDB0yyo/lGtjwIDVZmsuD52di7lIZWu/sBtvvA05dMgYZq5S6ILdsBXjOyaHeXd+EV4YMlj2VS/rm619w==",
|
|
||||||
"path": "discord.net.interactions/3.7.2",
|
|
||||||
"hashPath": "discord.net.interactions.3.7.2.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"Discord.Net.Rest/3.7.2": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-dyp8YaMBNJ837EH1KNz2PNGZqc2y71WFd1+pdldF+pLQJ3Gf/+V7685paAR7bQw7yFNyqEBR/QRBCNp+QIQ7Wg==",
|
|
||||||
"path": "discord.net.rest/3.7.2",
|
|
||||||
"hashPath": "discord.net.rest.3.7.2.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"Discord.Net.Webhook/3.7.2": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-da3i/mTq2y7mfj3xlHH14S4PivHbflJCVr8OUikJtQrxBOxvPkqP7ZYk3Y9S28q0K8qik+TUjCcjL5gELKrh/A==",
|
|
||||||
"path": "discord.net.webhook/3.7.2",
|
|
||||||
"hashPath": "discord.net.webhook.3.7.2.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"Discord.Net.WebSocket/3.7.2": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-pYCd6ET44ADaNiyEw82TaJnR7TKYHfrKCytWFWMPL5faJhoh260avZn3Hwunlf331lEQ0f4K1CujPkQbNuq7kQ==",
|
|
||||||
"path": "discord.net.websocket/3.7.2",
|
|
||||||
"hashPath": "discord.net.websocket.3.7.2.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"
|
|
||||||
},
|
|
||||||
"Microsoft.NETCore.Platforms/5.0.0": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-VyPlqzH2wavqquTcYpkIIAQ6WdenuKoFN0BdYBbCWsclXacSOHNQn66Gt4z5NBqEYW0FAPm5rlvki9ZiCij5xQ==",
|
|
||||||
"path": "microsoft.netcore.platforms/5.0.0",
|
|
||||||
"hashPath": "microsoft.netcore.platforms.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.Buffers/4.5.1": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-Rw7ijyl1qqRS0YQD/WycNst8hUUMgrMH4FCn1nNm27M4VxchZ1js3fVjQaANHO5f3sN4isvP4a+Met9Y4YomAg==",
|
|
||||||
"path": "system.buffers/4.5.1",
|
|
||||||
"hashPath": "system.buffers.4.5.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.Text.Encoding.CodePages/5.0.0": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-NyscU59xX6Uo91qvhOs2Ccho3AR2TnZPomo1Z0K6YpyztBPM/A5VbkzOO19sy3A3i1TtEnTxA7bCe3Us+r5MWg==",
|
|
||||||
"path": "system.text.encoding.codepages/5.0.0",
|
|
||||||
"hashPath": "system.text.encoding.codepages.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"
|
|
||||||
},
|
|
||||||
"YoutubeExplode/6.2.0": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-oH5kst4w1QkUwRjJco0alF57JOmFofSGlPkr4OniODB8R6MEyRWn1xFg3JS2wFYd6scZluoXRDhM3/uyUjO9/g==",
|
|
||||||
"path": "youtubeexplode/6.2.0",
|
|
||||||
"hashPath": "youtubeexplode.6.2.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,14 +0,0 @@
|
|||||||
<Project Sdk="Microsoft.NET.Sdk">
|
|
||||||
|
|
||||||
<PropertyGroup>
|
|
||||||
<TargetFramework>net6.0</TargetFramework>
|
|
||||||
<ImplicitUsings>enable</ImplicitUsings>
|
|
||||||
<Nullable>enable</Nullable>
|
|
||||||
<BaseOutputPath>bin\</BaseOutputPath>
|
|
||||||
</PropertyGroup>
|
|
||||||
|
|
||||||
<ItemGroup>
|
|
||||||
<ProjectReference Include="..\PluginManager\PluginManager.csproj" />
|
|
||||||
</ItemGroup>
|
|
||||||
|
|
||||||
</Project>
|
|
||||||
@@ -1,48 +0,0 @@
|
|||||||
using Discord;
|
|
||||||
using Discord.Commands;
|
|
||||||
using Discord.WebSocket;
|
|
||||||
using PluginManager;
|
|
||||||
using PluginManager.Interfaces;
|
|
||||||
using PluginManager.Others;
|
|
||||||
|
|
||||||
namespace CMD_LevelingSystem;
|
|
||||||
|
|
||||||
internal class Level : DBCommand
|
|
||||||
{
|
|
||||||
public string Command => "level";
|
|
||||||
|
|
||||||
public string Description => "Display tour current level";
|
|
||||||
|
|
||||||
public string Usage => "level";
|
|
||||||
|
|
||||||
public bool canUseDM => false;
|
|
||||||
|
|
||||||
public bool canUseServer => true;
|
|
||||||
|
|
||||||
public bool requireAdmin => false;
|
|
||||||
|
|
||||||
public async void Execute(SocketCommandContext context, SocketMessage message, DiscordSocketClient client, bool isDM)
|
|
||||||
{
|
|
||||||
if (!File.Exists(Config.GetValue<string>("LevelingSystemPath") + $"/{message.Author.Id}.dat"))
|
|
||||||
{
|
|
||||||
await context.Channel.SendMessageAsync("You are now unranked !");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
var user = await Functions.ConvertFromJson<User>(Config.GetValue<string>("LevelingSystemPath") + $"/{message.Author.Id}.dat");
|
|
||||||
if (user == null)
|
|
||||||
{
|
|
||||||
await context.Channel.SendMessageAsync("You are now unranked !");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
var builder = new EmbedBuilder();
|
|
||||||
var r = new Random();
|
|
||||||
builder.WithColor(r.Next(256), r.Next(256), r.Next(256));
|
|
||||||
builder.AddField("Current Level", user.CurrentLevel, true)
|
|
||||||
.AddField("Current EXP", user.CurrentEXP, true)
|
|
||||||
.AddField("Required Exp", user.RequiredEXPToLevelUp, true);
|
|
||||||
builder.WithTimestamp(DateTimeOffset.Now);
|
|
||||||
await context.Channel.SendMessageAsync(embed: builder.Build());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,18 +0,0 @@
|
|||||||
using Discord.WebSocket;
|
|
||||||
|
|
||||||
namespace CMD_LevelingSystem;
|
|
||||||
|
|
||||||
public class DiscordUser
|
|
||||||
{
|
|
||||||
public string Username { get; set; }
|
|
||||||
public ushort DiscordTag { get; set; }
|
|
||||||
public ulong userID { get; set; }
|
|
||||||
}
|
|
||||||
|
|
||||||
public class User
|
|
||||||
{
|
|
||||||
public DiscordUser user { get; set; }
|
|
||||||
public int CurrentLevel { get; set; }
|
|
||||||
public long CurrentEXP { get; set; }
|
|
||||||
public long RequiredEXPToLevelUp { get; set; }
|
|
||||||
}
|
|
||||||
@@ -1,19 +0,0 @@
|
|||||||
<Project Sdk="Microsoft.NET.Sdk">
|
|
||||||
|
|
||||||
<PropertyGroup>
|
|
||||||
<TargetFramework>net6.0</TargetFramework>
|
|
||||||
<BaseOutputPath>bin\</BaseOutputPath>
|
|
||||||
</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,23 +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)
|
|
||||||
{
|
|
||||||
var m = message.Content.Substring(6);
|
|
||||||
await message.Channel.SendMessageAsync(m);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,30 +0,0 @@
|
|||||||
using Discord.Commands;
|
|
||||||
using Discord.WebSocket;
|
|
||||||
using PluginManager.Interfaces;
|
|
||||||
|
|
||||||
namespace CMD_Utils;
|
|
||||||
|
|
||||||
internal 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)
|
|
||||||
{
|
|
||||||
var random = new System.Random();
|
|
||||||
var r = random.Next(1, 3);
|
|
||||||
if (r == 1)
|
|
||||||
await message.Channel.SendMessageAsync("Heads");
|
|
||||||
else
|
|
||||||
await message.Channel.SendMessageAsync("Tails");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,45 +0,0 @@
|
|||||||
using System.Collections.Generic;
|
|
||||||
using Discord;
|
|
||||||
using Discord.Commands;
|
|
||||||
using Discord.WebSocket;
|
|
||||||
using PluginManager.Interfaces;
|
|
||||||
using PluginManager.Others;
|
|
||||||
|
|
||||||
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;
|
|
||||||
var question = message.Content.Split(' ')[1].Replace('-', ' ');
|
|
||||||
var answers = Functions.MergeStrings(message.Content.Split(' '), 2).Split(' ');
|
|
||||||
var embedBuilder = new EmbedBuilder();
|
|
||||||
embedBuilder.Title = question;
|
|
||||||
var len = answers.Length;
|
|
||||||
for (var i = 0; i < len; i++) embedBuilder.AddField($"Answer {i + 1}", answers[i].Replace('-', ' '), true);
|
|
||||||
var msg = await context.Channel.SendMessageAsync(embed: embedBuilder.Build());
|
|
||||||
|
|
||||||
var 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 (var i = 0; i < len; i++) await msg.AddReactionAsync(emotes[i]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,39 +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
|
|
||||||
{
|
|
||||||
var msg = message.Content;
|
|
||||||
var a = int.Parse(msg.Split(' ')[1]);
|
|
||||||
var b = int.Parse(msg.Split(' ')[2]);
|
|
||||||
|
|
||||||
if (a > b)
|
|
||||||
{
|
|
||||||
var temp = a;
|
|
||||||
a = b;
|
|
||||||
b = temp;
|
|
||||||
}
|
|
||||||
|
|
||||||
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,6 +1,11 @@
|
|||||||
using Discord;
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
|
||||||
|
using Discord;
|
||||||
using Discord.Commands;
|
using Discord.Commands;
|
||||||
using Discord.WebSocket;
|
using Discord.WebSocket;
|
||||||
|
|
||||||
|
using PluginManager;
|
||||||
using PluginManager.Interfaces;
|
using PluginManager.Interfaces;
|
||||||
using PluginManager.Loaders;
|
using PluginManager.Loaders;
|
||||||
using PluginManager.Others;
|
using PluginManager.Others;
|
||||||
@@ -17,25 +22,17 @@ internal class Help : DBCommand
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public string Command => "help";
|
public string Command => "help";
|
||||||
|
|
||||||
|
public List<string> Aliases => null;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Command Description
|
/// Command Description
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string Description => "This command allows you to check all loadded commands";
|
public string Description => "This command allows you to check all loaded commands";
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Command usage
|
/// Command usage
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string Usage => "help";
|
public string Usage => "help <command>";
|
||||||
|
|
||||||
/// <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>
|
/// <summary>
|
||||||
/// Check if the command require administrator to be executed
|
/// Check if the command require administrator to be executed
|
||||||
@@ -46,21 +43,18 @@ internal class Help : DBCommand
|
|||||||
/// The main body of the command
|
/// The main body of the command
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="context">The command context</param>
|
/// <param name="context">The command context</param>
|
||||||
/// <param name="message">The command message</param>
|
public void ExecuteServer(SocketCommandContext context)
|
||||||
/// <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)
|
|
||||||
{
|
{
|
||||||
var args = Functions.GetArguments(message);
|
var args = Functions.GetArguments(context.Message);
|
||||||
if (args.Count != 0)
|
if (args.Count != 0)
|
||||||
{
|
{
|
||||||
foreach (var item in args)
|
foreach (var item in args)
|
||||||
{
|
{
|
||||||
var e = GenerateHelpCommand(item);
|
var e = GenerateHelpCommand(item);
|
||||||
if (e != null)
|
if (e is null)
|
||||||
context.Channel.SendMessageAsync(embed: e.Build());
|
|
||||||
else
|
|
||||||
context.Channel.SendMessageAsync("Unknown Command " + item);
|
context.Channel.SendMessageAsync("Unknown Command " + item);
|
||||||
|
else
|
||||||
|
context.Channel.SendMessageAsync(embed: e.Build());
|
||||||
}
|
}
|
||||||
|
|
||||||
return;
|
return;
|
||||||
@@ -70,30 +64,31 @@ internal class Help : DBCommand
|
|||||||
|
|
||||||
var adminCommands = "";
|
var adminCommands = "";
|
||||||
var normalCommands = "";
|
var normalCommands = "";
|
||||||
var DMCommands = "";
|
|
||||||
|
|
||||||
foreach (var cmd in PluginLoader.Commands!)
|
foreach (var cmd in PluginLoader.Commands!)
|
||||||
{
|
{
|
||||||
if (cmd.canUseDM) DMCommands += cmd.Command + " ";
|
|
||||||
if (cmd.requireAdmin)
|
if (cmd.requireAdmin)
|
||||||
adminCommands += cmd.Command + " ";
|
adminCommands += cmd.Command + " ";
|
||||||
else if (cmd.canUseServer) normalCommands += cmd.Command + " ";
|
else
|
||||||
|
normalCommands += cmd.Command + " ";
|
||||||
}
|
}
|
||||||
|
|
||||||
embedBuilder.AddField("Admin Commands", adminCommands);
|
embedBuilder.AddField("Admin Commands", adminCommands);
|
||||||
embedBuilder.AddField("Normal Commands", normalCommands);
|
embedBuilder.AddField("Normal Commands", normalCommands);
|
||||||
embedBuilder.AddField("DM Commands", DMCommands);
|
|
||||||
context.Channel.SendMessageAsync(embed: embedBuilder.Build());
|
context.Channel.SendMessageAsync(embed: embedBuilder.Build());
|
||||||
}
|
}
|
||||||
|
|
||||||
private EmbedBuilder GenerateHelpCommand(string command)
|
private EmbedBuilder GenerateHelpCommand(string command)
|
||||||
{
|
{
|
||||||
var embedBuilder = new EmbedBuilder();
|
var embedBuilder = new EmbedBuilder();
|
||||||
var cmd = PluginLoader.Commands.Find(p => p.Command == command);
|
var cmd = PluginLoader.Commands!.Find(p => p.Command == command || (p.Aliases is not null && p.Aliases.Contains(command)));
|
||||||
if (cmd == null) return null;
|
if (cmd == null) return null;
|
||||||
|
|
||||||
embedBuilder.AddField("Usage", cmd.Usage);
|
embedBuilder.AddField("Usage", Config.GetValue<string>("prefix") + cmd.Usage);
|
||||||
embedBuilder.AddField("Description", cmd.Description);
|
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;
|
return embedBuilder;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
using System;
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
using Discord.WebSocket;
|
using Discord.WebSocket;
|
||||||
using PluginManager.Interfaces;
|
using PluginManager.Interfaces;
|
||||||
@@ -17,6 +18,8 @@ internal class Restart : DBCommand
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public string Command => "restart";
|
public string Command => "restart";
|
||||||
|
|
||||||
|
public List<string> Aliases => null;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Command Description
|
/// Command Description
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -27,32 +30,18 @@ internal class Restart : DBCommand
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public string Usage => "restart [-p | -c | -args | -cmd] <args>";
|
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>
|
/// <summary>
|
||||||
/// Check if the command require administrator to be executed
|
/// Check if the command require administrator to be executed
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public bool requireAdmin => false;
|
public bool requireAdmin => true;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The main body of the command
|
/// The main body of the command
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="context">The command context</param>
|
/// <param name="context">The command context</param>
|
||||||
/// <param name="message">The command message</param>
|
public async void ExecuteServer(DiscordLibCommands.SocketCommandContext context)
|
||||||
/// <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 (!(message.Author as SocketGuildUser).hasPermission(DiscordLib.GuildPermission.Administrator)) return;
|
var args = Functions.GetArguments(context.Message);
|
||||||
var args = Functions.GetArguments(message);
|
|
||||||
var OS = Functions.GetOperatingSystem();
|
var OS = Functions.GetOperatingSystem();
|
||||||
if (args.Count == 0)
|
if (args.Count == 0)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,7 +1,10 @@
|
|||||||
using System;
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
|
||||||
using Discord;
|
using Discord;
|
||||||
using Discord.Commands;
|
using Discord.Commands;
|
||||||
using Discord.WebSocket;
|
using Discord.WebSocket;
|
||||||
|
|
||||||
using PluginManager;
|
using PluginManager;
|
||||||
using PluginManager.Interfaces;
|
using PluginManager.Interfaces;
|
||||||
|
|
||||||
@@ -14,6 +17,8 @@ internal class Settings : DBCommand
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public string Command => "set";
|
public string Command => "set";
|
||||||
|
|
||||||
|
public List<string> Aliases => null;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Command Description
|
/// Command Description
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -24,16 +29,6 @@ internal class Settings : DBCommand
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public string Usage => "set [keyword] [new Value]";
|
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>
|
/// <summary>
|
||||||
/// Check if the command require administrator to be executed
|
/// Check if the command require administrator to be executed
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -43,15 +38,12 @@ internal class Settings : DBCommand
|
|||||||
/// The main body of the command
|
/// The main body of the command
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="context">The command context</param>
|
/// <param name="context">The command context</param>
|
||||||
/// <param name="message">The command message</param>
|
public async void Execute(SocketCommandContext context)
|
||||||
/// <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;
|
var channel = context.Message.Channel;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var content = message.Content;
|
var content = context.Message.Content;
|
||||||
var data = content.Split(' ');
|
var data = content.Split(' ');
|
||||||
var keyword = data[1];
|
var keyword = data[1];
|
||||||
if (keyword.ToLower() == "help")
|
if (keyword.ToLower() == "help")
|
||||||
|
|||||||
@@ -1,10 +1,13 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
using Discord;
|
using Discord;
|
||||||
using Discord.Commands;
|
using Discord.Commands;
|
||||||
using Discord.WebSocket;
|
using Discord.WebSocket;
|
||||||
|
|
||||||
using PluginManager;
|
using PluginManager;
|
||||||
|
|
||||||
using static PluginManager.Others.Functions;
|
using static PluginManager.Others.Functions;
|
||||||
|
|
||||||
namespace DiscordBot.Discord.Core;
|
namespace DiscordBot.Discord.Core;
|
||||||
@@ -60,7 +63,9 @@ internal class Boot
|
|||||||
/// <returns>Task</returns>
|
/// <returns>Task</returns>
|
||||||
public async Task Awake()
|
public async Task Awake()
|
||||||
{
|
{
|
||||||
client = new DiscordSocketClient();
|
DiscordSocketConfig config = new DiscordSocketConfig { AlwaysDownloadUsers = true };
|
||||||
|
|
||||||
|
client = new DiscordSocketClient(config);
|
||||||
service = new CommandService();
|
service = new CommandService();
|
||||||
|
|
||||||
CommonTasks();
|
CommonTasks();
|
||||||
@@ -136,4 +141,5 @@ internal class Boot
|
|||||||
|
|
||||||
return Task.CompletedTask;
|
return Task.CompletedTask;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,8 +1,10 @@
|
|||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
using Discord.Commands;
|
using Discord.Commands;
|
||||||
using Discord.WebSocket;
|
using Discord.WebSocket;
|
||||||
|
|
||||||
using PluginManager.Loaders;
|
using PluginManager.Loaders;
|
||||||
using PluginManager.Others;
|
using PluginManager.Others;
|
||||||
using PluginManager.Others.Permissions;
|
using PluginManager.Others.Permissions;
|
||||||
@@ -47,13 +49,16 @@ internal class CommandHandler
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
if (Message as SocketUserMessage == null) return;
|
if (Message as SocketUserMessage == null)
|
||||||
|
return;
|
||||||
|
|
||||||
var message = Message as SocketUserMessage;
|
var message = Message as SocketUserMessage;
|
||||||
|
|
||||||
if (message == null) return;
|
if (message == null)
|
||||||
|
return;
|
||||||
|
|
||||||
if (!message.Content.StartsWith(botPrefix)) return;
|
if (!message.Content.StartsWith(botPrefix))
|
||||||
|
return;
|
||||||
|
|
||||||
var argPos = 0;
|
var argPos = 0;
|
||||||
|
|
||||||
@@ -63,69 +68,28 @@ internal class CommandHandler
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (message.Author.IsBot) return;
|
if (message.Author.IsBot)
|
||||||
|
return;
|
||||||
|
|
||||||
var context = new SocketCommandContext(client, message);
|
var context = new SocketCommandContext(client, message);
|
||||||
|
|
||||||
await commandService.ExecuteAsync(
|
await commandService.ExecuteAsync(context, argPos, null);
|
||||||
context,
|
|
||||||
argPos,
|
|
||||||
null
|
|
||||||
);
|
|
||||||
|
|
||||||
var plugin = PluginLoader.Commands!.Where(p => p.Command == message.Content.Split(' ')[0].Substring(botPrefix.Length)).FirstOrDefault();
|
var plugin = PluginLoader.Commands!.Where(p => p.Command == message.Content.Split(' ')[0].Substring(botPrefix.Length) || (p.Aliases is not null && p.Aliases.Contains(message.Content.Split(' ')[0].Substring(botPrefix.Length)))).FirstOrDefault();
|
||||||
|
|
||||||
|
if (plugin is null) throw new System.Exception("Failed to run command. !");
|
||||||
|
|
||||||
if (plugin != null)
|
if (plugin.requireAdmin && !context.Message.Author.isAdmin())
|
||||||
{
|
|
||||||
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;
|
return;
|
||||||
}
|
|
||||||
|
|
||||||
await message.Channel.SendMessageAsync("This command is for administrators only !");
|
if (context.Channel is SocketDMChannel)
|
||||||
return;
|
plugin.ExecuteDM(context);
|
||||||
}
|
else plugin.ExecuteServer(context);
|
||||||
|
|
||||||
plugin.Execute(context, message, client, true);
|
|
||||||
Functions.WriteLogFile($"[{message.Author.Id}] Executed command (DM) : " + plugin.Command);
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
catch (System.Exception ex)
|
||||||
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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch
|
|
||||||
{
|
{
|
||||||
|
ex.WriteErrFile();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
<StartupObject />
|
<StartupObject />
|
||||||
<SignAssembly>False</SignAssembly>
|
<SignAssembly>False</SignAssembly>
|
||||||
<IsPublishable>True</IsPublishable>
|
<IsPublishable>True</IsPublishable>
|
||||||
<AssemblyVersion>1.0.0.1</AssemblyVersion>
|
<AssemblyVersion>1.0.0.13</AssemblyVersion>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
|
||||||
|
|||||||
@@ -1,16 +1,16 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.Diagnostics;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Net.Http;
|
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
using System.Runtime.Loader;
|
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using Discord.WebSocket;
|
|
||||||
|
using Discord;
|
||||||
|
|
||||||
using DiscordBot.Discord.Core;
|
using DiscordBot.Discord.Core;
|
||||||
using PluginManager;
|
using PluginManager;
|
||||||
using PluginManager.Interfaces;
|
|
||||||
using PluginManager.Items;
|
using PluginManager.Items;
|
||||||
using PluginManager.Online;
|
using PluginManager.Online;
|
||||||
using PluginManager.Others;
|
using PluginManager.Others;
|
||||||
@@ -21,6 +21,7 @@ public class Program
|
|||||||
{
|
{
|
||||||
private static bool loadPluginsOnStartup;
|
private static bool loadPluginsOnStartup;
|
||||||
private static bool listPluginsAtStartup;
|
private static bool listPluginsAtStartup;
|
||||||
|
private static ConsoleCommandsHandler consoleCommandsHandler;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The main entry point for the application.
|
/// The main entry point for the application.
|
||||||
@@ -29,12 +30,38 @@ public class Program
|
|||||||
[Obsolete]
|
[Obsolete]
|
||||||
public static void Main(string[] args)
|
public static void Main(string[] args)
|
||||||
{
|
{
|
||||||
Directory.CreateDirectory("./Data/Resources");
|
Console.WriteLine("Loading resources ...");
|
||||||
Directory.CreateDirectory("./Data/Plugins/Commands");
|
|
||||||
Directory.CreateDirectory("./Data/Plugins/Events");
|
|
||||||
PreLoadComponents().Wait();
|
PreLoadComponents().Wait();
|
||||||
|
do
|
||||||
|
{
|
||||||
|
if (!Config.ContainsKey("ServerID"))
|
||||||
|
{
|
||||||
|
|
||||||
if (!Config.ContainsKey("token") || Config.GetValue<string>("token") == null || Config.GetValue<string>("token")?.Length != 70)
|
|
||||||
|
Console.WriteLine("Please enter the server ID: ");
|
||||||
|
Console_Utilities.WriteColorText("You can find it in the Server Settings at &r\"Widget\"&c section");
|
||||||
|
Console.WriteLine("Example: 1234567890123456789");
|
||||||
|
|
||||||
|
Console.WriteLine("This is not required, but is recommended. If you refuse to provide the ID, just press enter.\nThe server id is required to make easier for the bot to interact with the server.\nRemember: this bot is for one server ONLY.");
|
||||||
|
Console.Write("User Input > ");
|
||||||
|
ConsoleKeyInfo key = Console.ReadKey();
|
||||||
|
if (key.Key == ConsoleKey.Enter)
|
||||||
|
Config.AddValueToVariables("ServerID", "null", false);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
string SID = key.KeyChar + Console.ReadLine();
|
||||||
|
if (SID.Length != 18)
|
||||||
|
{
|
||||||
|
Console.Clear();
|
||||||
|
Console_Utilities.WriteColorText("&rYour server ID is not 18 characters long. Please try again. \n");
|
||||||
|
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
Config.AddValueToVariables("ServerID", SID, false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!Config.ContainsKey("token") || Config.GetValue<string>("token") == null || (Config.GetValue<string>("token")?.Length != 70 && Config.GetValue<string>("token")?.Length != 59))
|
||||||
{
|
{
|
||||||
Console.WriteLine("Please insert your token");
|
Console.WriteLine("Please insert your token");
|
||||||
Console.Write("Token = ");
|
Console.Write("Token = ");
|
||||||
@@ -42,28 +69,31 @@ public class Program
|
|||||||
if (token?.Length == 59 || token?.Length == 70)
|
if (token?.Length == 59 || token?.Length == 70)
|
||||||
Config.AddValueToVariables("token", token, true);
|
Config.AddValueToVariables("token", token, true);
|
||||||
else
|
else
|
||||||
Console.WriteLine("Invalid token");
|
{
|
||||||
|
Console.Clear();
|
||||||
Console.WriteLine("Please insert your prefix (max. 1 character long):");
|
Console_Utilities.WriteColorText("&rThe token length is invalid !");
|
||||||
Console.WriteLine("For a prefix longer then one character, the first character will be saved and the others will be ignored.\n No spaces or numbers allowed");
|
continue;
|
||||||
Console.Write("Prefix = ");
|
}
|
||||||
var prefix = Console.ReadLine()![0];
|
|
||||||
|
|
||||||
if (prefix == ' ' || char.IsDigit(prefix))
|
|
||||||
return;
|
|
||||||
Config.AddValueToVariables("prefix", prefix.ToString(), false);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!Config.ContainsKey("prefix") || Config.GetValue<string>("prefix") == default)
|
if (!Config.ContainsKey("prefix") || Config.GetValue<string>("prefix") == null || Config.GetValue<string>("prefix")?.Length != 1)
|
||||||
{
|
{
|
||||||
Console.WriteLine("Please insert your prefix (max. 1 character long):");
|
Console.WriteLine("Please insert your prefix (max. 1 character long):");
|
||||||
Console.WriteLine("For a prefix longer then one character, the first character will be saved and the others will be ignored.\n No spaces or numbers allowed");
|
Console.WriteLine("For a prefix longer then one character, the first character will be saved and the others will be ignored.\n No spaces, numbers, '/' or '\\' allowed");
|
||||||
Console.Write("Prefix = ");
|
Console.Write("Prefix = ");
|
||||||
var prefix = Console.ReadLine()![0];
|
var prefix = Console.ReadLine()![0];
|
||||||
if (prefix == ' ') return;
|
|
||||||
|
if (prefix == ' ' || char.IsDigit(prefix) || prefix == '/' || prefix == '\\')
|
||||||
|
{
|
||||||
|
Console.Clear();
|
||||||
|
Console_Utilities.WriteColorText("&rThe prefix is invalid");
|
||||||
|
continue;
|
||||||
|
}
|
||||||
Config.AddValueToVariables("prefix", prefix.ToString(), false);
|
Config.AddValueToVariables("prefix", prefix.ToString(), false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
} while (true);
|
||||||
|
|
||||||
HandleInput(args).Wait();
|
HandleInput(args).Wait();
|
||||||
}
|
}
|
||||||
@@ -74,27 +104,27 @@ public class Program
|
|||||||
/// <param name="discordbooter">The discord booter used to start the application</param>
|
/// <param name="discordbooter">The discord booter used to start the application</param>
|
||||||
private static void NoGUI(Boot discordbooter)
|
private static void NoGUI(Boot discordbooter)
|
||||||
{
|
{
|
||||||
var consoleCommandsHandler = new ConsoleCommandsHandler(discordbooter.client);
|
|
||||||
|
#if DEBUG
|
||||||
|
Console.WriteLine();
|
||||||
|
ConsoleCommandsHandler.ExecuteCommad("lp").Wait();
|
||||||
|
#else
|
||||||
if (loadPluginsOnStartup) consoleCommandsHandler.HandleCommand("lp");
|
if (loadPluginsOnStartup) consoleCommandsHandler.HandleCommand("lp");
|
||||||
if (listPluginsAtStartup) consoleCommandsHandler.HandleCommand("listplugs");
|
if (listPluginsAtStartup) consoleCommandsHandler.HandleCommand("listplugs");
|
||||||
|
#endif
|
||||||
Config.SaveConfig();
|
Config.SaveConfig(SaveType.NORMAL).Wait();
|
||||||
|
|
||||||
while (true)
|
while (true)
|
||||||
{
|
{
|
||||||
Console.ForegroundColor = ConsoleColor.White;
|
|
||||||
|
|
||||||
|
var cmd = Console.ReadLine();
|
||||||
|
if (!consoleCommandsHandler.HandleCommand(cmd!
|
||||||
#if DEBUG
|
#if DEBUG
|
||||||
Console_Utilities.WriteColorText("&rSethBot (&yDEBUG&r) &c> ", false);
|
, false
|
||||||
var cmd = Console.ReadLine();
|
|
||||||
if (!consoleCommandsHandler.HandleCommand(cmd!, false) && cmd.Length > 0)
|
|
||||||
Console.WriteLine("Failed to run command " + cmd);
|
|
||||||
#else
|
|
||||||
Console_Utilities.WriteColorText("&rSethBot &c> ", false);
|
|
||||||
var cmd = Console.ReadLine();
|
|
||||||
if (!consoleCommandsHandler.HandleCommand(cmd!) && cmd.Length > 0)
|
|
||||||
Console.WriteLine("Failed to run command " + cmd);
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
) && cmd.Length > 0)
|
||||||
|
Console.WriteLine("Failed to run command " + cmd);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -117,6 +147,14 @@ public class Program
|
|||||||
|
|
||||||
Console_Utilities.WriteColorText("&rRemember to close the bot using the ShutDown command (&ysd&r) or some settings won't be saved\n");
|
Console_Utilities.WriteColorText("&rRemember to close the bot using the ShutDown command (&ysd&r) or some settings won't be saved\n");
|
||||||
Console.ForegroundColor = ConsoleColor.White;
|
Console.ForegroundColor = ConsoleColor.White;
|
||||||
|
|
||||||
|
if (Config.ContainsKey("LaunchMessage"))
|
||||||
|
{
|
||||||
|
Console_Utilities.WriteColorText(Config.GetValue<string>("LaunchMessage"));
|
||||||
|
Config.RemoveKey("LaunchMessage");
|
||||||
|
}
|
||||||
|
|
||||||
|
Console_Utilities.WriteColorText("Please note that the bot saves a backup save file every time you are using the shudown command (&ysd&c)");
|
||||||
Console.WriteLine($"============================ LOG ============================");
|
Console.WriteLine($"============================ LOG ============================");
|
||||||
|
|
||||||
try
|
try
|
||||||
@@ -135,7 +173,6 @@ public class Program
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
var prefix = Config.GetValue<string>("prefix");
|
var prefix = Config.GetValue<string>("prefix");
|
||||||
|
|
||||||
var discordbooter = new Boot(token, prefix);
|
var discordbooter = new Boot(token, prefix);
|
||||||
await discordbooter.Awake();
|
await discordbooter.Awake();
|
||||||
return discordbooter;
|
return discordbooter;
|
||||||
@@ -170,6 +207,7 @@ public class Program
|
|||||||
/// <param name="args">The arguments</param>
|
/// <param name="args">The arguments</param>
|
||||||
private static async Task HandleInput(string[] args)
|
private static async Task HandleInput(string[] args)
|
||||||
{
|
{
|
||||||
|
|
||||||
var len = args.Length;
|
var len = args.Length;
|
||||||
|
|
||||||
if (len == 3 && args[0] == "/download")
|
if (len == 3 && args[0] == "/download")
|
||||||
@@ -193,11 +231,50 @@ public class Program
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
var b = await StartNoGUI();
|
||||||
|
consoleCommandsHandler = new ConsoleCommandsHandler(b.client);
|
||||||
|
|
||||||
|
if (len > 0 && args[0] == "/remplug")
|
||||||
|
{
|
||||||
|
|
||||||
|
string plugName = Functions.MergeStrings(args, 1);
|
||||||
|
Console.WriteLine("Starting to remove " + plugName);
|
||||||
|
await ConsoleCommandsHandler.ExecuteCommad("remplug " + plugName);
|
||||||
|
loadPluginsOnStartup = true;
|
||||||
|
len = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (len > 0 && args[0] == "/updateplug")
|
||||||
|
{
|
||||||
|
string plugName = args.MergeStrings(1);
|
||||||
|
Console.WriteLine("Updating " + plugName);
|
||||||
|
await ConsoleCommandsHandler.ExecuteCommad("dwplug" + plugName);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (len == 0 || (args[0] != "--exec" && args[0] != "--execute"))
|
if (len == 0 || (args[0] != "--exec" && args[0] != "--execute"))
|
||||||
{
|
{
|
||||||
var b = await StartNoGUI();
|
|
||||||
|
|
||||||
Thread mainThread = new Thread(() => NoGUI(b));
|
Thread mainThread = new Thread(() =>
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
NoGUI(b);
|
||||||
|
}
|
||||||
|
catch (IOException ex)
|
||||||
|
{
|
||||||
|
if (ex.Message == "No process is on the other end of the pipe." || (uint)ex.HResult == 0x800700E9)
|
||||||
|
{
|
||||||
|
if (!Config.ContainsKey("LaunchMessage"))
|
||||||
|
Config.AddValueToVariables("LaunchMessage", "An error occured while closing the bot last time. Please consider closing the bot using the &rsd&c method !\nThere is a risk of losing all data or corruption of the save file, which in some cases requires to reinstall the bot !", false);
|
||||||
|
Functions.WriteErrFile(ex.ToString());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
});
|
||||||
mainThread.Start();
|
mainThread.Start();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -238,7 +315,7 @@ public class Program
|
|||||||
case "--reset-logs":
|
case "--reset-logs":
|
||||||
await ClearFolder("./Output/Logs");
|
await ClearFolder("./Output/Logs");
|
||||||
await ClearFolder("./Output/Errors");
|
await ClearFolder("./Output/Errors");
|
||||||
Console.WriteLine("Successfully cleard logs folder");
|
Console.WriteLine("Successfully clear logs folder");
|
||||||
break;
|
break;
|
||||||
case "--exit":
|
case "--exit":
|
||||||
case "exit":
|
case "exit":
|
||||||
@@ -254,6 +331,12 @@ public class Program
|
|||||||
|
|
||||||
private static async Task PreLoadComponents()
|
private static async Task PreLoadComponents()
|
||||||
{
|
{
|
||||||
|
Console_Utilities.ProgressBar main = new Console_Utilities.ProgressBar(ProgressBarType.NO_END);
|
||||||
|
main.Start();
|
||||||
|
Directory.CreateDirectory("./Data/Resources");
|
||||||
|
Directory.CreateDirectory("./Data/Plugins/Commands");
|
||||||
|
Directory.CreateDirectory("./Data/Plugins/Events");
|
||||||
|
Directory.CreateDirectory("./Data/PAKS");
|
||||||
await Config.LoadConfig();
|
await Config.LoadConfig();
|
||||||
if (Config.ContainsKey("DeleteLogsAtStartup"))
|
if (Config.ContainsKey("DeleteLogsAtStartup"))
|
||||||
if (Config.GetValue<bool>("DeleteLogsAtStartup"))
|
if (Config.GetValue<bool>("DeleteLogsAtStartup"))
|
||||||
@@ -264,9 +347,9 @@ public class Program
|
|||||||
Config.PluginConfig.Load();
|
Config.PluginConfig.Load();
|
||||||
|
|
||||||
if (!Config.ContainsKey("Version"))
|
if (!Config.ContainsKey("Version"))
|
||||||
Config.AddValueToVariables("Version", System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString(), false);
|
Config.AddValueToVariables("Version", Assembly.GetExecutingAssembly().GetName().Version.ToString(), false);
|
||||||
else
|
else
|
||||||
Config.SetValue("Version", System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString());
|
Config.SetValue("Version", Assembly.GetExecutingAssembly().GetName().Version.ToString());
|
||||||
|
|
||||||
foreach (var key in OnlineDefaultKeys)
|
foreach (var key in OnlineDefaultKeys)
|
||||||
{
|
{
|
||||||
@@ -283,7 +366,11 @@ public class Program
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
List<string> onlineSettingsList = await ServerCom.ReadTextFromURL("https://raw.githubusercontent.com/Wizzy69/installer/discord-bot-files/OnlineData");
|
List<string> onlineSettingsList = await ServerCom.ReadTextFromURL("https://raw.githubusercontent.com/Wizzy69/installer/discord-bot-files/OnlineData");
|
||||||
|
main.Stop();
|
||||||
foreach (var key in onlineSettingsList)
|
foreach (var key in onlineSettingsList)
|
||||||
{
|
{
|
||||||
if (key.Length <= 3 || !key.Contains(' ')) continue;
|
if (key.Length <= 3 || !key.Contains(' ')) continue;
|
||||||
@@ -295,42 +382,47 @@ public class Program
|
|||||||
string newVersion = s[1];
|
string newVersion = s[1];
|
||||||
if (!newVersion.Equals(Config.GetValue<string>("Version")))
|
if (!newVersion.Equals(Config.GetValue<string>("Version")))
|
||||||
{
|
{
|
||||||
Console.WriteLine("A new version has been released on github page.");
|
if (Functions.GetOperatingSystem() == PluginManager.Others.OperatingSystem.WINDOWS)
|
||||||
Console.WriteLine("Download the new version using the following link wrote in yellow");
|
|
||||||
Console_Utilities.WriteColorText("&y" + Config.GetValue<string>("GitURL") + "&c");
|
|
||||||
|
|
||||||
Console.WriteLine();
|
|
||||||
Console.WriteLine("Your product will work just fine on this outdated version, but an update is recommended.\n" +
|
|
||||||
"From now on, this version is no longer supported"
|
|
||||||
);
|
|
||||||
Console_Utilities.WriteColorText("&rUse at your own risk&c");
|
|
||||||
|
|
||||||
Console_Utilities.WriteColorText("&mCurrent Version: " + Config.GetValue<string>("Version") + "&c");
|
|
||||||
Console_Utilities.WriteColorText("&gNew Version: " + newVersion + "&c");
|
|
||||||
|
|
||||||
Console.WriteLine("\n\n");
|
|
||||||
await Task.Delay(1000);
|
|
||||||
|
|
||||||
int waitTime = 20; //wait time to proceed
|
|
||||||
|
|
||||||
Console.Write($"The bot will start in {waitTime} seconds");
|
|
||||||
while (waitTime > 0)
|
|
||||||
{
|
{
|
||||||
await Task.Delay(1000);
|
|
||||||
waitTime--;
|
string url = $"https://github.com/Wizzy69/SethDiscordBot/releases/download/v{newVersion}/net6.0.zip";
|
||||||
Console.SetCursorPosition("The bot will start in ".Length, Console.CursorTop);
|
//string url2 = $"https://github.com/Wizzy69/SethDiscordBot/releases/download/v{newVersion}-preview/net6.0.zip";
|
||||||
Console.Write(" ");
|
|
||||||
Console.SetCursorPosition("The bot will start in ".Length, Console.CursorTop);
|
Process.Start(".\\Updater\\Updater.exe", $"{newVersion} {url} {Process.GetCurrentProcess().ProcessName}");
|
||||||
Console.Write(waitTime + " seconds");
|
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
string url = $"https://github.com/Wizzy69/SethDiscordBot/releases/download/v{newVersion}/net6.0_linux.zip";
|
||||||
|
Process.Start("./Updater/Updater", $"/update {url} ./DiscordBot ./");
|
||||||
|
}
|
||||||
|
//Environment.Exit(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
case "UpdaterVersion":
|
||||||
|
string updaternewversion = s[1];
|
||||||
|
if (Config.UpdaterVersion != updaternewversion)
|
||||||
|
{
|
||||||
|
Console.Clear();
|
||||||
|
Console.WriteLine("Installing updater ...\nDo NOT close the bot during update !");
|
||||||
|
Console_Utilities.ProgressBar bar = new Console_Utilities.ProgressBar(ProgressBarType.NO_END);
|
||||||
|
bar.Start();
|
||||||
|
await ServerCom.DownloadFileNoProgressAsync("https://github.com/Wizzy69/installer/releases/download/release-1-discordbot/Updater.zip", "./Updater.zip");
|
||||||
|
await Functions.ExtractArchive("./Updater.zip", "./", null, UnzipProgressType.PercentageFromTotalSize);
|
||||||
|
Config.UpdaterVersion = updaternewversion;
|
||||||
|
File.Delete("Updater.zip");
|
||||||
|
await Config.SaveConfig(SaveType.NORMAL);
|
||||||
|
bar.Stop();
|
||||||
|
Console.Clear();
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Console_Utilities.Initialize();
|
|
||||||
|
|
||||||
Config.SaveConfig();
|
Console_Utilities.Initialize();
|
||||||
|
await Config.SaveConfig(SaveType.NORMAL);
|
||||||
|
Console.Clear();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,20 +0,0 @@
|
|||||||
<Project Sdk="Microsoft.NET.Sdk">
|
|
||||||
|
|
||||||
<PropertyGroup>
|
|
||||||
<TargetFramework>net6.0</TargetFramework>
|
|
||||||
<ImplicitUsings>enable</ImplicitUsings>
|
|
||||||
<Nullable>enable</Nullable>
|
|
||||||
<BaseOutputPath></BaseOutputPath>
|
|
||||||
</PropertyGroup>
|
|
||||||
|
|
||||||
<ItemGroup>
|
|
||||||
<Compile Remove="bin\**" />
|
|
||||||
<EmbeddedResource Remove="bin\**" />
|
|
||||||
<None Remove="bin\**" />
|
|
||||||
</ItemGroup>
|
|
||||||
|
|
||||||
<ItemGroup>
|
|
||||||
<ProjectReference Include="..\PluginManager\PluginManager.csproj" />
|
|
||||||
</ItemGroup>
|
|
||||||
|
|
||||||
</Project>
|
|
||||||
@@ -1,57 +0,0 @@
|
|||||||
using Discord;
|
|
||||||
using Discord.WebSocket;
|
|
||||||
using EVE_LevelingSystem.LevelingSystemCore;
|
|
||||||
using PluginManager;
|
|
||||||
using PluginManager.Interfaces;
|
|
||||||
using PluginManager.Others;
|
|
||||||
|
|
||||||
namespace EVE_LevelingSystem
|
|
||||||
{
|
|
||||||
internal class Level : DBEvent
|
|
||||||
{
|
|
||||||
public string name => "Leveling System Event Handler";
|
|
||||||
public string description => "The Leveling System Event Handler";
|
|
||||||
|
|
||||||
internal static Settings globalSettings = new();
|
|
||||||
|
|
||||||
|
|
||||||
public async void Start(DiscordSocketClient client)
|
|
||||||
{
|
|
||||||
Directory.CreateDirectory("./Data/Resources/LevelingSystem");
|
|
||||||
if (!Config.ContainsKey("LevelingSystemPath"))
|
|
||||||
Config.AddValueToVariables("LevelingSystemPath", "./Data/Resources/LevelingSystem", true);
|
|
||||||
if (!Config.ContainsKey("LevelingSystemSettingsFile"))
|
|
||||||
Config.AddValueToVariables("LevelingSystemSettingsFile", "./Data/Resources/LevelingSystemSettings.txt", true);
|
|
||||||
//PluginManager.Config.AddValueToVariables
|
|
||||||
if (!File.Exists(Config.GetValue<string>("LevelingSystemSettingsFile")))
|
|
||||||
{
|
|
||||||
globalSettings = new Settings { TimeToWaitBetweenMessages = 5 };
|
|
||||||
await Functions.SaveToJsonFile<Settings>(Config.GetValue<string>("LevelingSystemSettingsFile"), globalSettings);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
globalSettings = await Functions.ConvertFromJson<Settings>(Config.GetValue<string>("LevelingSystemSettingsFile"));
|
|
||||||
|
|
||||||
// Console.WriteLine(globalSettings.TimeToWaitBetweenMessages);
|
|
||||||
client.MessageReceived += ClientOnMessageReceived;
|
|
||||||
}
|
|
||||||
|
|
||||||
private async Task ClientOnMessageReceived(SocketMessage arg)
|
|
||||||
{
|
|
||||||
if (arg.Author.IsBot || arg.IsTTS || arg.Content.StartsWith(Config.GetValue<string>("prefix"))) return;
|
|
||||||
string userID = arg.Author.Id.ToString();
|
|
||||||
User user;
|
|
||||||
if (File.Exists($"{Config.GetValue<string>("LevelingSystemPath")}/{userID}.dat"))
|
|
||||||
{
|
|
||||||
user = await Functions.ConvertFromJson<User>(Config.GetValue<string>("LevelingSystemPath")! + $"/{userID}.dat");
|
|
||||||
// Console.WriteLine(Config.GetValue("LevelingSystemPath"));
|
|
||||||
if (user.AddEXP()) await arg.Channel.SendMessageAsync($"{arg.Author.Mention} is now level {user.CurrentLevel}");
|
|
||||||
await Functions.SaveToJsonFile(Config.GetValue<string>("LevelingSystemPath") + $"/{userID}.dat", user);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
user = new User { CurrentEXP = 0, CurrentLevel = 1, RequiredEXPToLevelUp = LevelCalculator.GetNextLevelRequiredEXP(1), user = new DiscordUser { DiscordTag = arg.Author.DiscriminatorValue, userID = arg.Author.Id, Username = arg.Author.Username } };
|
|
||||||
if (user.AddEXP()) await arg.Channel.SendMessageAsync($"{arg.Author.Mention} is now level {user.CurrentLevel}");
|
|
||||||
await Functions.SaveToJsonFile<User>($"{Config.GetValue<string>("LevelingSystemPath")}/{userID}.dat", user);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,57 +0,0 @@
|
|||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
using PluginManager;
|
|
||||||
|
|
||||||
namespace EVE_LevelingSystem.LevelingSystemCore
|
|
||||||
{
|
|
||||||
internal static class LevelCalculator
|
|
||||||
{
|
|
||||||
internal static List<string> OnWaitingList = new();
|
|
||||||
|
|
||||||
internal static Int64 GetNextLevelRequiredEXP(int currentLevel)
|
|
||||||
{
|
|
||||||
return currentLevel * 8 + 24;
|
|
||||||
}
|
|
||||||
|
|
||||||
internal static void LevelUp(this User user)
|
|
||||||
{
|
|
||||||
user.CurrentEXP = 0;
|
|
||||||
user.RequiredEXPToLevelUp = GetNextLevelRequiredEXP(user.CurrentLevel);
|
|
||||||
user.CurrentLevel++;
|
|
||||||
}
|
|
||||||
|
|
||||||
internal static bool AddEXP(this User user)
|
|
||||||
{
|
|
||||||
if (OnWaitingList.Contains(user.user.userID.ToString())) return false;
|
|
||||||
Random r = new Random();
|
|
||||||
int exp = r.Next(2, 12);
|
|
||||||
Int64 userXP = user.CurrentEXP;
|
|
||||||
Int64 reqEXP = user.RequiredEXPToLevelUp;
|
|
||||||
if (userXP + exp >= reqEXP)
|
|
||||||
{
|
|
||||||
user.LevelUp();
|
|
||||||
user.CurrentEXP = exp - (reqEXP - userXP);
|
|
||||||
Console.WriteLine("Level up");
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
user.CurrentEXP += exp;
|
|
||||||
|
|
||||||
OnWaitingList.Add(user.user.userID.ToString());
|
|
||||||
|
|
||||||
|
|
||||||
new Thread(() =>
|
|
||||||
{
|
|
||||||
int minutesToWait = Level.globalSettings.TimeToWaitBetweenMessages;
|
|
||||||
Thread.Sleep(60000 * minutesToWait);
|
|
||||||
OnWaitingList.Remove(user.user.userID.ToString());
|
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,20 +0,0 @@
|
|||||||
using Discord;
|
|
||||||
using Discord.WebSocket;
|
|
||||||
|
|
||||||
namespace EVE_LevelingSystem.LevelingSystemCore
|
|
||||||
{
|
|
||||||
public class DiscordUser
|
|
||||||
{
|
|
||||||
public string Username { get; set; }
|
|
||||||
public ushort DiscordTag { get; set; }
|
|
||||||
public ulong userID { get; set; }
|
|
||||||
}
|
|
||||||
|
|
||||||
public class User
|
|
||||||
{
|
|
||||||
public DiscordUser user { get; set; }
|
|
||||||
public int CurrentLevel { get; set; }
|
|
||||||
public long CurrentEXP { get; set; }
|
|
||||||
public long RequiredEXPToLevelUp { get; set; }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
namespace EVE_LevelingSystem
|
|
||||||
{
|
|
||||||
public class Settings
|
|
||||||
{
|
|
||||||
public int TimeToWaitBetweenMessages { get; set; }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,34 +0,0 @@
|
|||||||
using AngleSharp.Dom;
|
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Diagnostics;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
namespace MusicCommands
|
|
||||||
{
|
|
||||||
internal class AudioFile
|
|
||||||
{
|
|
||||||
internal string Name { get; set; }
|
|
||||||
internal string Url { get; set; }
|
|
||||||
|
|
||||||
internal AudioFile(string name, string url)
|
|
||||||
{
|
|
||||||
Name = name;
|
|
||||||
Url = url;
|
|
||||||
}
|
|
||||||
|
|
||||||
internal async Task DownloadAudioFile()
|
|
||||||
{
|
|
||||||
Process proc = new Process();
|
|
||||||
proc.StartInfo.FileName = "MusicDownloader.exe";
|
|
||||||
proc.StartInfo.Arguments = $"{Url},{Name}";
|
|
||||||
proc.StartInfo.UseShellExecute = false;
|
|
||||||
proc.StartInfo.RedirectStandardOutput = true;
|
|
||||||
|
|
||||||
proc.Start();
|
|
||||||
await proc.WaitForExitAsync();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
using Discord;
|
|
||||||
using Discord.Audio;
|
|
||||||
|
|
||||||
namespace MusicCommands;
|
|
||||||
|
|
||||||
internal static class Data
|
|
||||||
{
|
|
||||||
internal static IAudioClient audioClient = null;
|
|
||||||
internal static IVoiceChannel voiceChannel = null;
|
|
||||||
|
|
||||||
internal static MusicPlayer MusicPlayer = null;
|
|
||||||
internal static MusicPlaylist Playlist = new();
|
|
||||||
}
|
|
||||||
@@ -1,41 +0,0 @@
|
|||||||
using Discord.Commands;
|
|
||||||
using Discord.WebSocket;
|
|
||||||
using PluginManager.Interfaces;
|
|
||||||
|
|
||||||
namespace MusicCommands;
|
|
||||||
|
|
||||||
internal class Leave : DBCommand
|
|
||||||
{
|
|
||||||
public string Command => "leave";
|
|
||||||
|
|
||||||
public string Description => "Leave the voice channel";
|
|
||||||
|
|
||||||
public string Usage => "leave";
|
|
||||||
|
|
||||||
public bool canUseDM => false;
|
|
||||||
|
|
||||||
public bool canUseServer => true;
|
|
||||||
|
|
||||||
public bool requireAdmin => false;
|
|
||||||
|
|
||||||
public async void Execute(SocketCommandContext context, SocketMessage message, DiscordSocketClient client, bool isDM)
|
|
||||||
{
|
|
||||||
if (Data.audioClient is not null && Data.voiceChannel is not null)
|
|
||||||
{
|
|
||||||
await Data.audioClient.StopAsync();
|
|
||||||
await Data.voiceChannel.DisconnectAsync();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (Data.Playlist is not null)
|
|
||||||
{
|
|
||||||
Data.Playlist.ClearQueue();
|
|
||||||
Data.Playlist = new();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (Data.MusicPlayer is not null)
|
|
||||||
{
|
|
||||||
Data.MusicPlayer.Stop();
|
|
||||||
Data.MusicPlayer = null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,25 +0,0 @@
|
|||||||
<Project Sdk="Microsoft.NET.Sdk">
|
|
||||||
|
|
||||||
<PropertyGroup>
|
|
||||||
<TargetFramework>net6.0</TargetFramework>
|
|
||||||
<Nullable>warnings</Nullable>
|
|
||||||
<BaseOutputPath>bin\</BaseOutputPath>
|
|
||||||
<AssemblyName>Music Commands</AssemblyName>
|
|
||||||
</PropertyGroup>
|
|
||||||
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
|
|
||||||
<OutputPath>../BUILDS/</OutputPath>
|
|
||||||
<ErrorReport>none</ErrorReport>
|
|
||||||
<DebugType>none</DebugType>
|
|
||||||
<DebugSymbols>false</DebugSymbols>
|
|
||||||
</PropertyGroup>
|
|
||||||
|
|
||||||
<ItemGroup>
|
|
||||||
<ProjectReference Include="..\PluginManager\PluginManager.csproj" />
|
|
||||||
</ItemGroup>
|
|
||||||
|
|
||||||
<ItemGroup>
|
|
||||||
<PackageReference Include="YoutubeExplode" Version="6.2.0" />
|
|
||||||
</ItemGroup>
|
|
||||||
|
|
||||||
</Project>
|
|
||||||
@@ -1,51 +0,0 @@
|
|||||||
using System.IO;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
namespace MusicCommands;
|
|
||||||
|
|
||||||
internal class MusicPlayer
|
|
||||||
{
|
|
||||||
private Stream outputStream { get; }
|
|
||||||
|
|
||||||
internal bool isPlaying, isPaused;
|
|
||||||
|
|
||||||
public MusicPlayer(Stream outputChannel)
|
|
||||||
{
|
|
||||||
outputStream = outputChannel;
|
|
||||||
}
|
|
||||||
|
|
||||||
public async Task Play(Stream source, int byteSize)
|
|
||||||
{
|
|
||||||
isPlaying = true;
|
|
||||||
while (isPlaying)
|
|
||||||
{
|
|
||||||
if (isPaused)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
var bits = new byte[byteSize];
|
|
||||||
var read = await source.ReadAsync(bits, 0, byteSize);
|
|
||||||
if (read == 0)
|
|
||||||
break;
|
|
||||||
try
|
|
||||||
{
|
|
||||||
await outputStream.WriteAsync(bits, 0, read);
|
|
||||||
}
|
|
||||||
catch
|
|
||||||
{
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
await source.FlushAsync();
|
|
||||||
await source.DisposeAsync();
|
|
||||||
source.Close();
|
|
||||||
await outputStream.FlushAsync();
|
|
||||||
isPlaying = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Stop()
|
|
||||||
{
|
|
||||||
isPlaying = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,25 +0,0 @@
|
|||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
namespace MusicCommands
|
|
||||||
{
|
|
||||||
internal class MusicPlaylist
|
|
||||||
{
|
|
||||||
internal MusicPlaylist()
|
|
||||||
{
|
|
||||||
Console.WriteLine("Initialized playlist.");
|
|
||||||
}
|
|
||||||
|
|
||||||
public Queue<AudioFile> QueueList = new();
|
|
||||||
|
|
||||||
public void Enqueue(AudioFile query) => QueueList.Enqueue(query);
|
|
||||||
public void ClearQueue() => QueueList.Clear();
|
|
||||||
|
|
||||||
public int Count => QueueList.Count;
|
|
||||||
public AudioFile GetNextSong => QueueList.Dequeue();
|
|
||||||
public AudioFile WhatIsNext => QueueList.Peek();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,25 +0,0 @@
|
|||||||
using Discord.Commands;
|
|
||||||
using Discord.WebSocket;
|
|
||||||
using PluginManager.Interfaces;
|
|
||||||
|
|
||||||
namespace MusicCommands;
|
|
||||||
|
|
||||||
internal class Pause : DBCommand
|
|
||||||
{
|
|
||||||
public string Command => "pause";
|
|
||||||
|
|
||||||
public string Description => "Pause/Unpause the music that is currently running";
|
|
||||||
|
|
||||||
public string Usage => "pause";
|
|
||||||
|
|
||||||
public bool canUseDM => false;
|
|
||||||
|
|
||||||
public bool canUseServer => true;
|
|
||||||
|
|
||||||
public bool requireAdmin => false;
|
|
||||||
|
|
||||||
public void Execute(SocketCommandContext context, SocketMessage message, DiscordSocketClient client, bool isDM)
|
|
||||||
{
|
|
||||||
Data.MusicPlayer.isPaused = !Data.MusicPlayer.isPaused;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,117 +0,0 @@
|
|||||||
using System;
|
|
||||||
using System.Diagnostics;
|
|
||||||
using System.IO;
|
|
||||||
using Discord;
|
|
||||||
using Discord.Audio;
|
|
||||||
using Discord.Commands;
|
|
||||||
using Discord.WebSocket;
|
|
||||||
using PluginManager.Interfaces;
|
|
||||||
using PluginManager.Others;
|
|
||||||
|
|
||||||
namespace MusicCommands;
|
|
||||||
|
|
||||||
internal class Play : DBCommand
|
|
||||||
{
|
|
||||||
public string Command => "play";
|
|
||||||
|
|
||||||
public string Description => "Play music from a file";
|
|
||||||
|
|
||||||
public string Usage => "play [name/url]";
|
|
||||||
|
|
||||||
public bool canUseDM => false;
|
|
||||||
|
|
||||||
public bool canUseServer => true;
|
|
||||||
|
|
||||||
public bool requireAdmin => false;
|
|
||||||
|
|
||||||
public async void Execute(SocketCommandContext context, SocketMessage message, DiscordSocketClient client, bool isDM)
|
|
||||||
{
|
|
||||||
Directory.CreateDirectory("Music");
|
|
||||||
var path = "./Music/";
|
|
||||||
string[] splitted = message.Content.Split(' ');
|
|
||||||
if (splitted.Length < 2)
|
|
||||||
return;
|
|
||||||
do
|
|
||||||
{
|
|
||||||
if (splitted.Length == 2 && splitted[1].Contains("youtube.com") || splitted[1].Contains("youtu.be"))
|
|
||||||
{
|
|
||||||
var url = splitted[1];
|
|
||||||
path += $"{Functions.CreateMD5(url)}";
|
|
||||||
if (File.Exists(path))
|
|
||||||
{
|
|
||||||
Data.Playlist.Enqueue(new AudioFile(path, null));
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
var file = new AudioFile(path, url);
|
|
||||||
await file.DownloadAudioFile();
|
|
||||||
Data.Playlist.Enqueue(file);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
var searchString = splitted.MergeStrings(1);
|
|
||||||
path += $"{Functions.CreateMD5(searchString)}";
|
|
||||||
if (File.Exists(path))
|
|
||||||
{
|
|
||||||
Data.Playlist.Enqueue(new AudioFile(path, null));
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
await context.Channel.SendMessageAsync("Searching for " + searchString);
|
|
||||||
var file = new AudioFile(path, searchString);
|
|
||||||
await file.DownloadAudioFile();
|
|
||||||
Data.Playlist.Enqueue(file);
|
|
||||||
if (Data.MusicPlayer is null)
|
|
||||||
await context.Channel.SendMessageAsync("Playing: " + searchString);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (Data.MusicPlayer is not null)
|
|
||||||
{
|
|
||||||
await context.Channel.SendMessageAsync("Enqueued your request");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
while (false);
|
|
||||||
|
|
||||||
|
|
||||||
Data.voiceChannel = (context.User as IGuildUser)?.VoiceChannel;
|
|
||||||
|
|
||||||
if (Data.voiceChannel == null)
|
|
||||||
{
|
|
||||||
await context.Channel.SendMessageAsync("User must be in a voice channel, or a voice channel must be passed as an argument.");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (Data.audioClient is null)
|
|
||||||
{
|
|
||||||
Data.audioClient = await Data.voiceChannel.ConnectAsync(true);
|
|
||||||
Data.MusicPlayer = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
using (var discordChanneAudioOutStream = Data.audioClient.CreatePCMStream(AudioApplication.Mixed))
|
|
||||||
{
|
|
||||||
if (Data.MusicPlayer is null)
|
|
||||||
Data.MusicPlayer = new MusicPlayer(discordChanneAudioOutStream);
|
|
||||||
while (Data.Playlist.Count > 0)
|
|
||||||
{
|
|
||||||
var nowPlaying = Data.Playlist.GetNextSong;
|
|
||||||
using (var ffmpeg = CreateStream(nowPlaying.Name))
|
|
||||||
using (var ffmpegOutputBaseStream = ffmpeg.StandardOutput.BaseStream)
|
|
||||||
{
|
|
||||||
await Data.MusicPlayer.Play(ffmpegOutputBaseStream, 1024);
|
|
||||||
Console.WriteLine("Finished playing from " + nowPlaying.Url);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Data.MusicPlayer = null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private Process CreateStream(string path)
|
|
||||||
{
|
|
||||||
return Process.Start(new ProcessStartInfo { FileName = "ffmpeg", Arguments = $"-hide_banner -loglevel panic -i \"{path}\" -ac 2 -f s16le -ar 48000 pipe:1", UseShellExecute = false, RedirectStandardOutput = true });
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,31 +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 MusicCommands
|
|
||||||
{
|
|
||||||
public class Skip : DBCommand
|
|
||||||
{
|
|
||||||
public string Command => "skip";
|
|
||||||
|
|
||||||
public string Description => "skip the music that is currently running";
|
|
||||||
|
|
||||||
public string Usage => "skip";
|
|
||||||
|
|
||||||
public bool canUseDM => false;
|
|
||||||
|
|
||||||
public bool canUseServer => true;
|
|
||||||
|
|
||||||
public bool requireAdmin => false;
|
|
||||||
|
|
||||||
public void Execute(SocketCommandContext context, SocketMessage message, DiscordSocketClient client, bool isDM)
|
|
||||||
{
|
|
||||||
Data.MusicPlayer.isPlaying = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,31 +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 MusicCommands
|
|
||||||
{
|
|
||||||
public class queue : DBCommand
|
|
||||||
{
|
|
||||||
public string Command => "queue";
|
|
||||||
|
|
||||||
public string Description => "check queue";
|
|
||||||
|
|
||||||
public string Usage => "queue";
|
|
||||||
|
|
||||||
public bool canUseDM => false;
|
|
||||||
|
|
||||||
public bool canUseServer => true;
|
|
||||||
|
|
||||||
public bool requireAdmin => false;
|
|
||||||
|
|
||||||
public async void Execute(SocketCommandContext context, SocketMessage message, DiscordSocketClient client, bool isDM)
|
|
||||||
{
|
|
||||||
await context.Channel.SendMessageAsync($"You have {Data.Playlist.Count} items in queue");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -11,8 +11,10 @@ namespace PluginManager
|
|||||||
{
|
{
|
||||||
internal class AppConfig
|
internal class AppConfig
|
||||||
{
|
{
|
||||||
|
public string? UpdaterVersion { get; set; }
|
||||||
public Dictionary<string, object>? ApplicationVariables { get; init; }
|
public Dictionary<string, object>? ApplicationVariables { get; init; }
|
||||||
public List<string>? ProtectedKeyWords { get; init; }
|
public List<string>? ProtectedKeyWords { get; init; }
|
||||||
|
public Dictionary<string, string>? PluginVersions { get; init; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class Config
|
public static class Config
|
||||||
@@ -57,9 +59,8 @@ namespace PluginManager
|
|||||||
public static bool Contains(string pluginName)
|
public static bool Contains(string pluginName)
|
||||||
{
|
{
|
||||||
foreach (var tuple in InstalledPlugins)
|
foreach (var tuple in InstalledPlugins)
|
||||||
{
|
if (tuple.Item1 == pluginName)
|
||||||
if (tuple.Item1 == pluginName) return true;
|
return true;
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -67,9 +68,9 @@ namespace PluginManager
|
|||||||
public static PluginType GetPluginType(string pluginName)
|
public static PluginType GetPluginType(string pluginName)
|
||||||
{
|
{
|
||||||
foreach (var tuple in InstalledPlugins)
|
foreach (var tuple in InstalledPlugins)
|
||||||
{
|
if (tuple.Item1 == pluginName)
|
||||||
if (tuple.Item1 == pluginName) return tuple.Item2;
|
return tuple.Item2;
|
||||||
}
|
|
||||||
|
|
||||||
return PluginType.Unknown;
|
return PluginType.Unknown;
|
||||||
}
|
}
|
||||||
@@ -77,6 +78,21 @@ namespace PluginManager
|
|||||||
|
|
||||||
private static AppConfig? appConfig { get; set; }
|
private static AppConfig? appConfig { get; set; }
|
||||||
|
|
||||||
|
public static string UpdaterVersion { get => appConfig.UpdaterVersion; set => appConfig.UpdaterVersion = value; }
|
||||||
|
|
||||||
|
public static string GetPluginVersion(string pluginName) => appConfig!.PluginVersions![pluginName];
|
||||||
|
public static void SetPluginVersion(string pluginName, string newVersion)
|
||||||
|
{
|
||||||
|
if (appConfig!.PluginVersions!.ContainsKey(pluginName))
|
||||||
|
appConfig.PluginVersions[pluginName] = newVersion;
|
||||||
|
else appConfig.PluginVersions.Add(pluginName, newVersion);
|
||||||
|
|
||||||
|
// SaveConfig();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void RemovePluginVersion(string pluginName) => appConfig!.PluginVersions!.Remove(pluginName);
|
||||||
|
public static bool PluginVersionsContainsKey(string pluginName) => appConfig!.PluginVersions!.ContainsKey(pluginName);
|
||||||
|
|
||||||
public static void AddValueToVariables<T>(string key, T value, bool isProtected)
|
public static void AddValueToVariables<T>(string key, T value, bool isProtected)
|
||||||
{
|
{
|
||||||
if (value == null)
|
if (value == null)
|
||||||
@@ -88,7 +104,7 @@ namespace PluginManager
|
|||||||
if (isProtected && key != "Version")
|
if (isProtected && key != "Version")
|
||||||
appConfig.ProtectedKeyWords!.Add(key);
|
appConfig.ProtectedKeyWords!.Add(key);
|
||||||
|
|
||||||
SaveConfig();
|
SaveConfig(SaveType.NORMAL);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Type GetVariableType(string value)
|
public static Type GetVariableType(string value)
|
||||||
@@ -156,7 +172,7 @@ namespace PluginManager
|
|||||||
throw new Exception("Key is protected");
|
throw new Exception("Key is protected");
|
||||||
|
|
||||||
appConfig.ApplicationVariables[key] = JsonSerializer.SerializeToElement(value);
|
appConfig.ApplicationVariables[key] = JsonSerializer.SerializeToElement(value);
|
||||||
SaveConfig();
|
SaveConfig(SaveType.NORMAL);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void RemoveKey(string key)
|
public static void RemoveKey(string key)
|
||||||
@@ -165,30 +181,59 @@ namespace PluginManager
|
|||||||
throw new Exception("Key is protected");
|
throw new Exception("Key is protected");
|
||||||
appConfig!.ApplicationVariables!.Remove(key);
|
appConfig!.ApplicationVariables!.Remove(key);
|
||||||
appConfig.ProtectedKeyWords!.Remove(key);
|
appConfig.ProtectedKeyWords!.Remove(key);
|
||||||
SaveConfig();
|
SaveConfig(SaveType.NORMAL);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static async void SaveConfig()
|
public static bool IsReadOnly(string key)
|
||||||
|
{
|
||||||
|
return appConfig.ProtectedKeyWords.Contains(key);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static async Task SaveConfig(SaveType type)
|
||||||
|
{
|
||||||
|
if (type == SaveType.NORMAL)
|
||||||
{
|
{
|
||||||
string path = Functions.dataFolder + "config.json";
|
string path = Functions.dataFolder + "config.json";
|
||||||
await Functions.SaveToJsonFile<AppConfig>(path, appConfig!);
|
await Functions.SaveToJsonFile<AppConfig>(path, appConfig!);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (type == SaveType.BACKUP)
|
||||||
|
{
|
||||||
|
string path = Functions.dataFolder + "config.json.bak";
|
||||||
|
await Functions.SaveToJsonFile<AppConfig>(path, appConfig!);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static async Task LoadConfig()
|
public static async Task LoadConfig()
|
||||||
{
|
{
|
||||||
string path = Functions.dataFolder + "config.json";
|
string path = Functions.dataFolder + "config.json";
|
||||||
if (File.Exists(path))
|
if (File.Exists(path))
|
||||||
|
{
|
||||||
|
try
|
||||||
{
|
{
|
||||||
appConfig = await Functions.ConvertFromJson<AppConfig>(path);
|
appConfig = await Functions.ConvertFromJson<AppConfig>(path);
|
||||||
Functions.WriteLogFile($"Loaded {appConfig.ApplicationVariables!.Keys.Count} application variables.\nLoaded {appConfig.ProtectedKeyWords!.Count} readonly variables.");
|
|
||||||
}
|
}
|
||||||
else
|
catch (Exception ex)
|
||||||
appConfig = new() { ApplicationVariables = new Dictionary<string, object>(), ProtectedKeyWords = new List<string>() };
|
{
|
||||||
|
File.Delete(path);
|
||||||
|
Console.WriteLine("An error occured while loading the settings. Importing from backup file...");
|
||||||
|
path = Functions.dataFolder + "config.json.bak";
|
||||||
|
appConfig = await Functions.ConvertFromJson<AppConfig>(path);
|
||||||
|
Functions.WriteErrFile(ex.Message);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Functions.WriteLogFile($"Loaded {appConfig.ApplicationVariables!.Keys.Count} application variables.\nLoaded {appConfig.ProtectedKeyWords!.Count} readonly variables.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
appConfig = new() { ApplicationVariables = new Dictionary<string, object>(), ProtectedKeyWords = new List<string>(), PluginVersions = new Dictionary<string, string>(), UpdaterVersion = "-1" };
|
||||||
}
|
}
|
||||||
|
|
||||||
public static bool ContainsValue<T>(T value) => appConfig!.ApplicationVariables!.ContainsValue(value!);
|
public static bool ContainsValue<T>(T value) => appConfig!.ApplicationVariables!.ContainsValue(value!);
|
||||||
public static bool ContainsKey(string key) => appConfig!.ApplicationVariables!.ContainsKey(key);
|
public static bool ContainsKey(string key) => appConfig!.ApplicationVariables!.ContainsKey(key);
|
||||||
|
|
||||||
public static ReadOnlyDictionary<string, object> GetAllVariables() => new(appConfig!.ApplicationVariables!);
|
public static IDictionary<string, object> GetAllVariables() => appConfig.ApplicationVariables;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,6 @@
|
|||||||
using Discord.Commands;
|
using System.Collections.Generic;
|
||||||
|
|
||||||
|
using Discord.Commands;
|
||||||
using Discord.WebSocket;
|
using Discord.WebSocket;
|
||||||
|
|
||||||
namespace PluginManager.Interfaces;
|
namespace PluginManager.Interfaces;
|
||||||
@@ -11,6 +13,11 @@ public interface DBCommand
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
string Command { get; }
|
string Command { get; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Command aliases. Users may use this to execute the command
|
||||||
|
/// </summary>
|
||||||
|
List<string>? Aliases { get; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Command description
|
/// Command description
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -22,30 +29,20 @@ public interface DBCommand
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
string Usage { get; }
|
string Usage { get; }
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// true if the command can be used in a DM channel, otherwise false
|
|
||||||
/// </summary>
|
|
||||||
bool canUseDM { get; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// true if the command can be used in a server, otherwise false
|
|
||||||
/// </summary>
|
|
||||||
bool canUseServer { get; }
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// true if the command requre admin, otherwise false
|
/// true if the command requre admin, otherwise false
|
||||||
/// </summary>
|
/// </summary>
|
||||||
bool requireAdmin { get; }
|
bool requireAdmin { get; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The main body of the command. This is what is executed when user calls the command
|
/// The main body of the command. This is what is executed when user calls the command in Server
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="context">The disocrd Context</param>
|
/// <param name="context">The disocrd Context</param>
|
||||||
/// <param name="message">The message that the user types</param>
|
void ExecuteServer(SocketCommandContext context) { }
|
||||||
/// <param name="client">The discord client of the bot</param>
|
|
||||||
/// <param name="isDM">true if the message was sent from DM, otherwise false. It is always false if canUseDM is false</param>
|
/// <summary>
|
||||||
void Execute(SocketCommandContext context,
|
/// The main body of the command. This is what is executed when user calls the command in DM
|
||||||
SocketMessage message,
|
/// </summary>
|
||||||
DiscordSocketClient client,
|
/// <param name="context">The disocrd Context</param>
|
||||||
bool isDM);
|
void ExecuteDM(SocketCommandContext context) { }
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -44,8 +44,8 @@ public class Command
|
|||||||
|
|
||||||
public class ConsoleCommand
|
public class ConsoleCommand
|
||||||
{
|
{
|
||||||
public string CommandName { get; set; }
|
public string CommandName { get; init; }
|
||||||
public string Description { get; set; }
|
public string Description { get; init; }
|
||||||
public string Usage { get; set; }
|
public string Usage { get; init; }
|
||||||
public Action<string[]> Action { get; set; }
|
public Action<string[]> Action { get; init; }
|
||||||
}
|
}
|
||||||
@@ -1,12 +1,20 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.Diagnostics;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
using System.Net.Http;
|
||||||
|
using System.Reflection;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
using Discord.WebSocket;
|
using Discord.WebSocket;
|
||||||
|
|
||||||
|
using PluginManager.Interfaces;
|
||||||
using PluginManager.Loaders;
|
using PluginManager.Loaders;
|
||||||
using PluginManager.Online;
|
using PluginManager.Online;
|
||||||
|
using PluginManager.Online.Helpers;
|
||||||
|
using PluginManager.Online.Updates;
|
||||||
using PluginManager.Others;
|
using PluginManager.Others;
|
||||||
|
|
||||||
namespace PluginManager.Items;
|
namespace PluginManager.Items;
|
||||||
@@ -17,6 +25,10 @@ public class ConsoleCommandsHandler
|
|||||||
private static readonly List<ConsoleCommand> commandList = new();
|
private static readonly List<ConsoleCommand> commandList = new();
|
||||||
private readonly DiscordSocketClient? client;
|
private readonly DiscordSocketClient? client;
|
||||||
|
|
||||||
|
|
||||||
|
private static bool isDownloading = false;
|
||||||
|
private static bool pluginsLoaded = false;
|
||||||
|
|
||||||
public ConsoleCommandsHandler(DiscordSocketClient client)
|
public ConsoleCommandsHandler(DiscordSocketClient client)
|
||||||
{
|
{
|
||||||
this.client = client;
|
this.client = client;
|
||||||
@@ -26,7 +38,7 @@ public class ConsoleCommandsHandler
|
|||||||
|
|
||||||
private void InitializeBasicCommands()
|
private void InitializeBasicCommands()
|
||||||
{
|
{
|
||||||
var pluginsLoaded = false;
|
|
||||||
commandList.Clear();
|
commandList.Clear();
|
||||||
|
|
||||||
AddCommand("help", "Show help", "help <command>", args =>
|
AddCommand("help", "Show help", "help <command>", args =>
|
||||||
@@ -70,30 +82,48 @@ public class ConsoleCommandsHandler
|
|||||||
if (pluginsLoaded)
|
if (pluginsLoaded)
|
||||||
return;
|
return;
|
||||||
var loader = new PluginLoader(client!);
|
var loader = new PluginLoader(client!);
|
||||||
|
ConsoleColor cc = Console.ForegroundColor;
|
||||||
loader.onCMDLoad += (name, typeName, success, exception) =>
|
loader.onCMDLoad += (name, typeName, success, exception) =>
|
||||||
{
|
{
|
||||||
Console.ForegroundColor = ConsoleColor.Green;
|
|
||||||
if (name == null || name.Length < 2)
|
if (name == null || name.Length < 2)
|
||||||
name = typeName;
|
name = typeName;
|
||||||
if (success)
|
if (success)
|
||||||
|
{
|
||||||
|
Console.ForegroundColor = ConsoleColor.Green;
|
||||||
Console.WriteLine("[CMD] Successfully loaded command : " + name);
|
Console.WriteLine("[CMD] Successfully loaded command : " + name);
|
||||||
|
}
|
||||||
|
|
||||||
else
|
else
|
||||||
Console.WriteLine("[CMD] Failed to load command : " + name + " because " + exception!.Message);
|
{
|
||||||
Console.ForegroundColor = ConsoleColor.Red;
|
Console.ForegroundColor = ConsoleColor.Red;
|
||||||
|
|
||||||
|
Console.WriteLine("[CMD] Failed to load command : " + name + " because " + exception!.Message);
|
||||||
|
}
|
||||||
|
Console.ForegroundColor = cc;
|
||||||
};
|
};
|
||||||
loader.onEVELoad += (name, typeName, success, exception) =>
|
loader.onEVELoad += (name, typeName, success, exception) =>
|
||||||
{
|
{
|
||||||
if (name == null || name.Length < 2)
|
if (name == null || name.Length < 2)
|
||||||
name = typeName;
|
name = typeName;
|
||||||
Console.ForegroundColor = ConsoleColor.Green;
|
|
||||||
if (success)
|
if (success)
|
||||||
|
{
|
||||||
|
Console.ForegroundColor = ConsoleColor.Green;
|
||||||
Console.WriteLine("[EVENT] Successfully loaded event : " + name);
|
Console.WriteLine("[EVENT] Successfully loaded event : " + name);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
Console.WriteLine("[EVENT] Failed to load event : " + name + " because " + exception!.Message);
|
{
|
||||||
Console.ForegroundColor = ConsoleColor.Red;
|
Console.ForegroundColor = ConsoleColor.Red;
|
||||||
|
Console.WriteLine("[EVENT] Failed to load event : " + name + " because " + exception!.Message);
|
||||||
|
}
|
||||||
|
Console.ForegroundColor = cc;
|
||||||
};
|
};
|
||||||
|
|
||||||
loader.LoadPlugins();
|
loader.LoadPlugins();
|
||||||
|
Console.ForegroundColor = cc;
|
||||||
pluginsLoaded = true;
|
pluginsLoaded = true;
|
||||||
|
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -101,8 +131,10 @@ public class ConsoleCommandsHandler
|
|||||||
|
|
||||||
AddCommand("dwplug", "download plugin", "dwplug [name]", async args =>
|
AddCommand("dwplug", "download plugin", "dwplug [name]", async args =>
|
||||||
{
|
{
|
||||||
|
isDownloading = true;
|
||||||
if (args.Length == 1)
|
if (args.Length == 1)
|
||||||
{
|
{
|
||||||
|
isDownloading = false;
|
||||||
Console.WriteLine("Please specify plugin name");
|
Console.WriteLine("Please specify plugin name");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -116,10 +148,11 @@ public class ConsoleCommandsHandler
|
|||||||
{
|
{
|
||||||
if (name == "")
|
if (name == "")
|
||||||
{
|
{
|
||||||
|
isDownloading = false;
|
||||||
Console_Utilities.WriteColorText("Name is invalid");
|
Console_Utilities.WriteColorText("Name is invalid");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
isDownloading = false;
|
||||||
Console_Utilities.WriteColorText($"Failed to find plugin &b{name} &c!" + " Use &glistplugs &ccommand to display all available plugins !");
|
Console_Utilities.WriteColorText($"Failed to find plugin &b{name} &c!" + " Use &glistplugs &ccommand to display all available plugins !");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -131,7 +164,6 @@ public class ConsoleCommandsHandler
|
|||||||
path = $"./{info[1].Split('/')[info[1].Split('/').Length - 1]}";
|
path = $"./{info[1].Split('/')[info[1].Split('/').Length - 1]}";
|
||||||
//Console.WriteLine("Downloading: " + path + " [" + info[1] + "]");
|
//Console.WriteLine("Downloading: " + path + " [" + info[1] + "]");
|
||||||
await ServerCom.DownloadFileAsync(info[1], path);
|
await ServerCom.DownloadFileAsync(info[1], path);
|
||||||
if (info[0] == "Command" || info[0] == "Event")
|
|
||||||
if (info[0] == "Event")
|
if (info[0] == "Event")
|
||||||
Config.PluginConfig.InstalledPlugins.Add(new(name, PluginType.Event));
|
Config.PluginConfig.InstalledPlugins.Add(new(name, PluginType.Event));
|
||||||
else if (info[0] == "Command")
|
else if (info[0] == "Command")
|
||||||
@@ -154,34 +186,18 @@ public class ConsoleCommandsHandler
|
|||||||
continue;
|
continue;
|
||||||
var split = line.Split(',');
|
var split = line.Split(',');
|
||||||
Console.WriteLine($"\nDownloading item: {split[1]}");
|
Console.WriteLine($"\nDownloading item: {split[1]}");
|
||||||
|
if (File.Exists("./" + split[1])) File.Delete("./" + split[1]);
|
||||||
await ServerCom.DownloadFileAsync(split[0], "./" + split[1]);
|
await ServerCom.DownloadFileAsync(split[0], "./" + split[1]);
|
||||||
Console.WriteLine();
|
Console.WriteLine();
|
||||||
|
if (split[0].EndsWith(".pak"))
|
||||||
if (split[0].EndsWith(".zip") || split[0].EndsWith(".pak") || split[0].EndsWith(".pkg"))
|
File.Move("./" + split[1], "./Data/PAKS/" + split[1], true);
|
||||||
|
else if (split[0].EndsWith(".zip") || split[0].EndsWith(".pkg"))
|
||||||
{
|
{
|
||||||
Console.WriteLine($"Extracting {split[1]}");
|
Console.WriteLine($"Extracting {split[1]} ...");
|
||||||
var proc = 0f;
|
var bar = new Console_Utilities.ProgressBar(ProgressBarType.NO_END);// { Max = 100f, Color = ConsoleColor.Green };
|
||||||
var isExtracting = true;
|
bar.Start();
|
||||||
var bar = new Console_Utilities.ProgressBar { Max = 100f, Color = ConsoleColor.Green };
|
await Functions.ExtractArchive("./" + split[1], "./", null, UnzipProgressType.PercentageFromTotalSize);
|
||||||
|
bar.Stop();
|
||||||
IProgress<float> extractProgress = new Progress<float>(value => { proc = value; });
|
|
||||||
new Thread(new Task(() =>
|
|
||||||
{
|
|
||||||
while (isExtracting)
|
|
||||||
{
|
|
||||||
bar.Update(proc);
|
|
||||||
if (proc >= 99.9f)
|
|
||||||
isExtracting = false;
|
|
||||||
Thread.Sleep(500);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
).Start
|
|
||||||
).Start();
|
|
||||||
await Functions.ExtractArchive("./" + split[1], "./", extractProgress, UnzipProgressType.PercentageFromTotalSize);
|
|
||||||
bar.Update(100f);
|
|
||||||
isExtracting = false;
|
|
||||||
await Task.Delay(1000);
|
|
||||||
bar.Update(100);
|
|
||||||
Console.WriteLine("\n");
|
Console.WriteLine("\n");
|
||||||
File.Delete("./" + split[1]);
|
File.Delete("./" + split[1]);
|
||||||
}
|
}
|
||||||
@@ -189,6 +205,12 @@ public class ConsoleCommandsHandler
|
|||||||
|
|
||||||
Console.WriteLine();
|
Console.WriteLine();
|
||||||
}
|
}
|
||||||
|
VersionString? ver = await VersionString.GetVersionOfPackageFromWeb(name);
|
||||||
|
if (ver is null) throw new Exception("Incorrect version");
|
||||||
|
Config.SetPluginVersion(name, $"{ver.PackageVersionID}.{ver.PackageMainVersion}.{ver.PackageCheckVersion}");
|
||||||
|
// Console.WriteLine();
|
||||||
|
|
||||||
|
isDownloading = false;
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -237,14 +259,142 @@ public class ConsoleCommandsHandler
|
|||||||
{
|
{
|
||||||
if (client is null)
|
if (client is null)
|
||||||
return;
|
return;
|
||||||
|
Console_Utilities.ProgressBar bar = new Console_Utilities.ProgressBar(ProgressBarType.NO_END);
|
||||||
|
|
||||||
|
bar.Start();
|
||||||
|
await Config.SaveConfig(SaveType.NORMAL);
|
||||||
|
await Config.SaveConfig(SaveType.BACKUP);
|
||||||
|
await Task.Delay(4000);
|
||||||
|
bar.Stop();
|
||||||
|
Console.WriteLine();
|
||||||
await client.StopAsync();
|
await client.StopAsync();
|
||||||
await client.DisposeAsync();
|
await client.DisposeAsync();
|
||||||
Config.SaveConfig();
|
|
||||||
Console.WriteLine("Bot is closing in 2 seconds ! Please wait to save data !");
|
|
||||||
await Task.Delay(2000);
|
|
||||||
Environment.Exit(0);
|
Environment.Exit(0);
|
||||||
|
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
|
AddCommand("import", "Load an external command", "import [pluginName]", async (args) =>
|
||||||
|
{
|
||||||
|
if (args.Length <= 1) return;
|
||||||
|
string pName = Functions.MergeStrings(args, 1);
|
||||||
|
HttpClient client = new HttpClient();
|
||||||
|
string url = (await manager.GetPluginLinkByName(pName))[1];
|
||||||
|
Stream s = await client.GetStreamAsync(url);
|
||||||
|
MemoryStream str = new MemoryStream();
|
||||||
|
await s.CopyToAsync(str);
|
||||||
|
var asmb = Assembly.Load(str.ToArray());
|
||||||
|
|
||||||
|
var types = asmb.GetTypes();
|
||||||
|
foreach (var type in types)
|
||||||
|
{
|
||||||
|
if (type.IsClass && typeof(DBEvent).IsAssignableFrom(type))
|
||||||
|
{
|
||||||
|
DBEvent instance = (DBEvent)Activator.CreateInstance(type);
|
||||||
|
instance.Start(this.client);
|
||||||
|
Console.WriteLine($"Loaded external {type.FullName}!");
|
||||||
|
}
|
||||||
|
else if (type.IsClass && typeof(DBCommand).IsAssignableFrom(type))
|
||||||
|
{
|
||||||
|
Console.WriteLine("Only events can be loaded from external sources !");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
AddCommand("remplug", "Remove a plugin", "remplug [plugName]", async args =>
|
||||||
|
{
|
||||||
|
|
||||||
|
if (args.Length <= 1) return;
|
||||||
|
|
||||||
|
isDownloading = true;
|
||||||
|
string plugName = Functions.MergeStrings(args, 1);
|
||||||
|
if (pluginsLoaded)
|
||||||
|
{
|
||||||
|
if (Functions.GetOperatingSystem() == Others.OperatingSystem.WINDOWS)
|
||||||
|
{
|
||||||
|
Process.Start("DiscordBot.exe", $"/remplug {plugName}");
|
||||||
|
await Task.Delay(100);
|
||||||
|
Environment.Exit(0);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Process.Start("./DiscordBot", $"/remplug {plugName}");
|
||||||
|
await Task.Delay(100);
|
||||||
|
Environment.Exit(0);
|
||||||
|
}
|
||||||
|
isDownloading = false;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
string location = "./Data/Plugins/";
|
||||||
|
|
||||||
|
location = Config.PluginConfig.GetPluginType(plugName) switch
|
||||||
|
{
|
||||||
|
PluginType.Command => location + "Commands/" + plugName + "." + PluginLoader.pluginCMDExtension,
|
||||||
|
PluginType.Event => location + "Events/" + plugName + "." + PluginLoader.pluginEVEExtension,
|
||||||
|
PluginType.Unknown => "./",
|
||||||
|
_ => throw new NotImplementedException("Plugin type incorrect")
|
||||||
|
};
|
||||||
|
|
||||||
|
if (!File.Exists(location))
|
||||||
|
{
|
||||||
|
Console.WriteLine("The plugin does not exist");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
File.Delete(location);
|
||||||
|
if (Config.PluginConfig.Contains(plugName))
|
||||||
|
{
|
||||||
|
var tuple = Config.PluginConfig.InstalledPlugins.Where(t => t.Item1 == plugName).FirstOrDefault();
|
||||||
|
Console.WriteLine("Found: " + tuple.ToString());
|
||||||
|
Config.PluginConfig.InstalledPlugins.Remove(tuple);
|
||||||
|
Config.RemovePluginVersion(plugName);
|
||||||
|
await Config.SaveConfig(SaveType.NORMAL);
|
||||||
|
}
|
||||||
|
Console.WriteLine("Removed the plugin DLL. Checking for other files ...");
|
||||||
|
|
||||||
|
var info = await manager.GetPluginLinkByName(plugName);
|
||||||
|
if (info[2] != string.Empty)
|
||||||
|
{
|
||||||
|
var lines = await ServerCom.ReadTextFromURL(info[2]);
|
||||||
|
foreach (var line in lines)
|
||||||
|
{
|
||||||
|
if (!(line.Length > 0 && line.Contains(",")))
|
||||||
|
continue;
|
||||||
|
var split = line.Split(',');
|
||||||
|
if (File.Exists("./" + split[1]))
|
||||||
|
File.Delete("./" + split[1]);
|
||||||
|
|
||||||
|
|
||||||
|
Console.WriteLine("Removed: " + split[1]);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if (Directory.Exists(plugName))
|
||||||
|
Directory.Delete(plugName, true);
|
||||||
|
}
|
||||||
|
isDownloading = false;
|
||||||
|
Console.WriteLine(plugName + " has been successfully deleted !");
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
AddCommand("reload", "Reload the bot with all plugins", () =>
|
||||||
|
{
|
||||||
|
if (Functions.GetOperatingSystem() == Others.OperatingSystem.WINDOWS)
|
||||||
|
{
|
||||||
|
Process.Start("DiscordBot.exe", $"lp");
|
||||||
|
HandleCommand("sd");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
|
||||||
|
Process.Start("./DiscordBot", $"lp");
|
||||||
|
HandleCommand("sd");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
//Sort the commands by name
|
//Sort the commands by name
|
||||||
commandList.Sort((x, y) => x.CommandName.CompareTo(y.CommandName));
|
commandList.Sort((x, y) => x.CommandName.CompareTo(y.CommandName));
|
||||||
}
|
}
|
||||||
@@ -268,7 +418,7 @@ public class ConsoleCommandsHandler
|
|||||||
|
|
||||||
public static bool CommandExists(string command)
|
public static bool CommandExists(string command)
|
||||||
{
|
{
|
||||||
return !(GetCommand(command) is null);
|
return GetCommand(command) is not null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static ConsoleCommand? GetCommand(string command)
|
public static ConsoleCommand? GetCommand(string command)
|
||||||
@@ -276,8 +426,24 @@ public class ConsoleCommandsHandler
|
|||||||
return commandList.FirstOrDefault(t => t.CommandName == command);
|
return commandList.FirstOrDefault(t => t.CommandName == command);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static async Task ExecuteCommad(string command)
|
||||||
|
{
|
||||||
|
var args = command.Split(' ');
|
||||||
|
// Console.WriteLine(command);
|
||||||
|
foreach (var item in commandList.ToList())
|
||||||
|
if (item.CommandName == args[0])
|
||||||
|
{
|
||||||
|
item.Action.Invoke(args);
|
||||||
|
Console.WriteLine();
|
||||||
|
|
||||||
|
while (isDownloading) await Task.Delay(1000);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public bool HandleCommand(string command, bool removeCommandExecution = true)
|
public bool HandleCommand(string command, bool removeCommandExecution = true)
|
||||||
{
|
{
|
||||||
|
Console.ForegroundColor = ConsoleColor.White;
|
||||||
var args = command.Split(' ');
|
var args = command.Split(' ');
|
||||||
foreach (var item in commandList.ToList())
|
foreach (var item in commandList.ToList())
|
||||||
if (item.CommandName == args[0])
|
if (item.CommandName == args[0])
|
||||||
@@ -292,6 +458,7 @@ public class ConsoleCommandsHandler
|
|||||||
|
|
||||||
Console.WriteLine();
|
Console.WriteLine();
|
||||||
item.Action(args);
|
item.Action(args);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -3,6 +3,9 @@ using System.Collections.Generic;
|
|||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
using PluginManager.Online.Updates;
|
||||||
using PluginManager.Others;
|
using PluginManager.Others;
|
||||||
|
|
||||||
namespace PluginManager.Loaders;
|
namespace PluginManager.Loaders;
|
||||||
@@ -49,6 +52,7 @@ internal class Loader<T>
|
|||||||
var files = Directory.GetFiles(path, $"*.{extension}", SearchOption.AllDirectories);
|
var files = Directory.GetFiles(path, $"*.{extension}", SearchOption.AllDirectories);
|
||||||
foreach (var file in files)
|
foreach (var file in files)
|
||||||
{
|
{
|
||||||
|
|
||||||
Assembly.LoadFrom(file);
|
Assembly.LoadFrom(file);
|
||||||
if (FileLoaded != null)
|
if (FileLoaded != null)
|
||||||
{
|
{
|
||||||
@@ -57,7 +61,7 @@ internal class Loader<T>
|
|||||||
Exception = null,
|
Exception = null,
|
||||||
TypeName = nameof(T),
|
TypeName = nameof(T),
|
||||||
IsLoaded = false,
|
IsLoaded = false,
|
||||||
PluginName = file,
|
PluginName = new FileInfo(file).Name.Split('.')[0],
|
||||||
Plugin = null
|
Plugin = null
|
||||||
};
|
};
|
||||||
FileLoaded.Invoke(args);
|
FileLoaded.Invoke(args);
|
||||||
|
|||||||
@@ -1,7 +1,15 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.IO;
|
||||||
|
using System.Runtime.CompilerServices;
|
||||||
|
using System.Threading;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
using Discord.WebSocket;
|
using Discord.WebSocket;
|
||||||
|
|
||||||
using PluginManager.Interfaces;
|
using PluginManager.Interfaces;
|
||||||
|
using PluginManager.Online.Helpers;
|
||||||
|
using PluginManager.Online.Updates;
|
||||||
using PluginManager.Others;
|
using PluginManager.Others;
|
||||||
|
|
||||||
namespace PluginManager.Loaders;
|
namespace PluginManager.Loaders;
|
||||||
@@ -52,8 +60,45 @@ public class PluginLoader
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// The main mathod that is called to load all events
|
/// The main mathod that is called to load all events
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public void LoadPlugins()
|
public async void LoadPlugins()
|
||||||
{
|
{
|
||||||
|
//Check for updates in commands
|
||||||
|
foreach (var file in Directory.GetFiles("./Data/Plugins/Commands", $"*.{pluginCMDExtension}", SearchOption.AllDirectories))
|
||||||
|
{
|
||||||
|
await Task.Run(async () =>
|
||||||
|
{
|
||||||
|
string name = new FileInfo(file).Name.Split('.')[0];
|
||||||
|
if (!Config.PluginVersionsContainsKey(name))
|
||||||
|
Config.SetPluginVersion(name, (await VersionString.GetVersionOfPackageFromWeb(name))?.PackageVersionID + ".0.0");
|
||||||
|
|
||||||
|
if (await PluginUpdater.CheckForUpdates(name))
|
||||||
|
await PluginUpdater.Download(name);
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
//Check for updates in events
|
||||||
|
foreach (var file in Directory.GetFiles("./Data/Plugins/Events", $"*.{pluginEVEExtension}", SearchOption.AllDirectories))
|
||||||
|
{
|
||||||
|
await Task.Run(async () =>
|
||||||
|
{
|
||||||
|
string name = new FileInfo(file).Name.Split('.')[0];
|
||||||
|
if (!Config.PluginVersionsContainsKey(name))
|
||||||
|
Config.SetPluginVersion(name, (await VersionString.GetVersionOfPackageFromWeb(name))?.PackageVersionID + ".0.0");
|
||||||
|
|
||||||
|
if (await PluginUpdater.CheckForUpdates(name))
|
||||||
|
await PluginUpdater.Download(name);
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//Save the new config file (after the updates)
|
||||||
|
await Config.SaveConfig(SaveType.NORMAL);
|
||||||
|
|
||||||
|
|
||||||
|
//Load all plugins
|
||||||
|
|
||||||
Commands = new List<DBCommand>();
|
Commands = new List<DBCommand>();
|
||||||
Events = new List<DBEvent>();
|
Events = new List<DBEvent>();
|
||||||
|
|
||||||
@@ -71,16 +116,23 @@ public class PluginLoader
|
|||||||
|
|
||||||
Commands = commandsLoader.Load();
|
Commands = commandsLoader.Load();
|
||||||
Events = eventsLoader.Load();
|
Events = eventsLoader.Load();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void EventFileLoaded(LoaderArgs e)
|
private void EventFileLoaded(LoaderArgs e)
|
||||||
{
|
{
|
||||||
if (e.IsLoaded) Functions.WriteLogFile($"[EVENT] Event from file [{e.PluginName}] has been successfully created !");
|
if (!e.IsLoaded)
|
||||||
|
{
|
||||||
|
Functions.WriteLogFile($"[EVENT] Event from file [{e.PluginName}] has been successfully created !");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnCommandFileLoaded(LoaderArgs e)
|
private void OnCommandFileLoaded(LoaderArgs e)
|
||||||
{
|
{
|
||||||
if (e.IsLoaded) Functions.WriteLogFile($"[CMD] Command from file [{e.PluginName}] has been successfully loaded !");
|
if (!e.IsLoaded)
|
||||||
|
{
|
||||||
|
Functions.WriteLogFile($"[CMD] Command from file [{e.PluginName}] has been successfully loaded !");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnEventLoaded(LoaderArgs e)
|
private void OnEventLoaded(LoaderArgs e)
|
||||||
|
|||||||
91
PluginManager/Online/Helpers/VersionString.cs
Normal file
91
PluginManager/Online/Helpers/VersionString.cs
Normal file
@@ -0,0 +1,91 @@
|
|||||||
|
using PluginManager.Others;
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using System.Linq;
|
||||||
|
|
||||||
|
namespace PluginManager.Online.Helpers
|
||||||
|
{
|
||||||
|
public class VersionString
|
||||||
|
{
|
||||||
|
public int PackageVersionID;
|
||||||
|
public int PackageMainVersion;
|
||||||
|
public int PackageCheckVersion;
|
||||||
|
|
||||||
|
public VersionString(string version)
|
||||||
|
{
|
||||||
|
string[] data = version.Split('.');
|
||||||
|
try
|
||||||
|
{
|
||||||
|
PackageVersionID = int.Parse(data[0]);
|
||||||
|
PackageMainVersion = int.Parse(data[1]);
|
||||||
|
PackageCheckVersion = int.Parse(data[2]);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
throw new Exception("Failed to write Version", ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#region operators
|
||||||
|
public static bool operator >(VersionString s1, VersionString s2)
|
||||||
|
{
|
||||||
|
if (s1.PackageVersionID > s2.PackageVersionID) return true;
|
||||||
|
if (s1.PackageVersionID == s2.PackageVersionID)
|
||||||
|
{
|
||||||
|
if (s1.PackageMainVersion > s2.PackageMainVersion) return true;
|
||||||
|
if (s1.PackageMainVersion == s2.PackageMainVersion && s1.PackageCheckVersion > s2.PackageCheckVersion) return true;
|
||||||
|
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
public static bool operator <(VersionString s1, VersionString s2) => !(s1 > s2) && s1 != s2;
|
||||||
|
|
||||||
|
public static bool operator ==(VersionString s1, VersionString s2)
|
||||||
|
{
|
||||||
|
if (s1.PackageVersionID == s2.PackageVersionID && s1.PackageMainVersion == s2.PackageMainVersion && s1.PackageCheckVersion == s2.PackageCheckVersion) return true;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static bool operator !=(VersionString s1, VersionString s2) => !(s1 == s2);
|
||||||
|
|
||||||
|
public static bool operator <=(VersionString s1, VersionString s2) => (s1 < s2 || s1 == s2);
|
||||||
|
public static bool operator >=(VersionString s1, VersionString s2) => (s1 > s2 || s1 == s2);
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
public override string ToString()
|
||||||
|
{
|
||||||
|
return "{PackageID: " + PackageVersionID + ", PackageVersion: " + PackageMainVersion + ", PackageCheckVersion: " + PackageCheckVersion + "}";
|
||||||
|
}
|
||||||
|
|
||||||
|
public string ToShortString()
|
||||||
|
{
|
||||||
|
if (PackageVersionID == 0 && PackageCheckVersion == 0 && PackageMainVersion == 0)
|
||||||
|
return "Unknown";
|
||||||
|
return $"{PackageVersionID}.{PackageMainVersion}.{PackageCheckVersion}";
|
||||||
|
}
|
||||||
|
|
||||||
|
public static VersionString? GetVersionOfPackage(string pakName)
|
||||||
|
{
|
||||||
|
if (!Config.PluginVersionsContainsKey(pakName))
|
||||||
|
return null;
|
||||||
|
return new VersionString(Config.GetPluginVersion(pakName));
|
||||||
|
}
|
||||||
|
|
||||||
|
public static async Task<VersionString?> GetVersionOfPackageFromWeb(string pakName)
|
||||||
|
{
|
||||||
|
string url = "https://raw.githubusercontent.com/Wizzy69/installer/discord-bot-files/Versions";
|
||||||
|
List<string> data = await ServerCom.ReadTextFromURL(url);
|
||||||
|
string? version = (from item in data
|
||||||
|
where !item.StartsWith("#") && item.StartsWith(pakName)
|
||||||
|
select item.Split(',')[1]).FirstOrDefault();
|
||||||
|
if (version == default || version == null) return null;
|
||||||
|
return new VersionString(version);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,7 +1,10 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
using PluginManager.Online.Helpers;
|
||||||
using PluginManager.Others;
|
using PluginManager.Others;
|
||||||
|
|
||||||
using OperatingSystem = PluginManager.Others.OperatingSystem;
|
using OperatingSystem = PluginManager.Others.OperatingSystem;
|
||||||
|
|
||||||
namespace PluginManager.Online;
|
namespace PluginManager.Online;
|
||||||
@@ -37,7 +40,7 @@ public class PluginsManager
|
|||||||
var op = Functions.GetOperatingSystem();
|
var op = Functions.GetOperatingSystem();
|
||||||
|
|
||||||
var len = lines.Length;
|
var len = lines.Length;
|
||||||
string[] titles = { "Name", "Description", "Plugin Type", "Libraries", "Installed" };
|
string[] titles = { "Name", "Description", "Type", "Version", "Installed" };
|
||||||
data.Add(new[] { "-", "-", "-", "-", "-" });
|
data.Add(new[] { "-", "-", "-", "-", "-" });
|
||||||
data.Add(titles);
|
data.Add(titles);
|
||||||
data.Add(new[] { "-", "-", "-", "-", "-" });
|
data.Add(new[] { "-", "-", "-", "-", "-" });
|
||||||
@@ -54,11 +57,7 @@ public class PluginsManager
|
|||||||
display[0] = content[0];
|
display[0] = content[0];
|
||||||
display[1] = content[1];
|
display[1] = content[1];
|
||||||
display[2] = content[2];
|
display[2] = content[2];
|
||||||
if (content.Length == 6 && (content[5] != null || content[5].Length > 2))
|
display[3] = (await VersionString.GetVersionOfPackageFromWeb(content[0]) ?? new VersionString("0.0.0")).ToShortString();
|
||||||
display[3] = ((await ServerCom.ReadTextFromURL(content[5])).Count + 1).ToString();
|
|
||||||
|
|
||||||
else
|
|
||||||
display[3] = "1";
|
|
||||||
if (Config.PluginConfig.Contains(content[0]) || Config.PluginConfig.Contains(content[0]))
|
if (Config.PluginConfig.Contains(content[0]) || Config.PluginConfig.Contains(content[0]))
|
||||||
display[4] = "✓";
|
display[4] = "✓";
|
||||||
else
|
else
|
||||||
@@ -73,8 +72,7 @@ public class PluginsManager
|
|||||||
display[0] = content[0];
|
display[0] = content[0];
|
||||||
display[1] = content[1];
|
display[1] = content[1];
|
||||||
display[2] = content[2];
|
display[2] = content[2];
|
||||||
if (content.Length == 6 && (content[5] != null || content[5].Length > 2))
|
display[3] = (await VersionString.GetVersionOfPackageFromWeb(content[0]) ?? new VersionString("0.0.0")).ToShortString();
|
||||||
display[3] = ((await ServerCom.ReadTextFromURL(content[5])).Count + 1).ToString();
|
|
||||||
if (Config.PluginConfig.Contains(content[0]) || Config.PluginConfig.Contains(content[0]))
|
if (Config.PluginConfig.Contains(content[0]) || Config.PluginConfig.Contains(content[0]))
|
||||||
display[4] = "✓";
|
display[4] = "✓";
|
||||||
else
|
else
|
||||||
@@ -86,7 +84,7 @@ public class PluginsManager
|
|||||||
|
|
||||||
data.Add(new[] { "-", "-", "-", "-", "-" });
|
data.Add(new[] { "-", "-", "-", "-", "-" });
|
||||||
|
|
||||||
Console_Utilities.FormatAndAlignTable(data);
|
Console_Utilities.FormatAndAlignTable(data, TableFormat.CENTER_EACH_COLUMN_BASED);
|
||||||
}
|
}
|
||||||
catch (Exception exception)
|
catch (Exception exception)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -54,7 +54,7 @@ namespace PluginManager.Online
|
|||||||
bool isDownloading = true;
|
bool isDownloading = true;
|
||||||
float c_progress = 0;
|
float c_progress = 0;
|
||||||
|
|
||||||
Console_Utilities.ProgressBar pbar = new Console_Utilities.ProgressBar { Max = 100f, NoColor = true };
|
Console_Utilities.ProgressBar pbar = new Console_Utilities.ProgressBar(ProgressBarType.NORMAL) { Max = 100f, NoColor = true };
|
||||||
|
|
||||||
IProgress<float> progress = new Progress<float>(percent => { c_progress = percent; });
|
IProgress<float> progress = new Progress<float>(percent => { c_progress = percent; });
|
||||||
|
|
||||||
@@ -79,5 +79,11 @@ namespace PluginManager.Online
|
|||||||
pbar.Update(100f);
|
pbar.Update(100f);
|
||||||
isDownloading = false;
|
isDownloading = false;
|
||||||
}
|
}
|
||||||
|
public static async Task DownloadFileNoProgressAsync(string URL, string location)
|
||||||
|
{
|
||||||
|
IProgress<float> progress = new Progress<float>();
|
||||||
|
await DownloadFileAsync(URL, location, progress);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
51
PluginManager/Online/Updates/PluginUpdater.cs
Normal file
51
PluginManager/Online/Updates/PluginUpdater.cs
Normal file
@@ -0,0 +1,51 @@
|
|||||||
|
using PluginManager.Items;
|
||||||
|
using PluginManager.Online.Helpers;
|
||||||
|
using PluginManager.Others;
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace PluginManager.Online.Updates
|
||||||
|
{
|
||||||
|
public class PluginUpdater
|
||||||
|
{
|
||||||
|
public static async Task<bool> CheckForUpdates(string pakName)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var webV = await VersionString.GetVersionOfPackageFromWeb(pakName);
|
||||||
|
var local = VersionString.GetVersionOfPackage(pakName);
|
||||||
|
|
||||||
|
if (local is null) return true;
|
||||||
|
if (webV is null) return false;
|
||||||
|
|
||||||
|
if (webV == local) return false;
|
||||||
|
if (webV > local) return true;
|
||||||
|
}
|
||||||
|
catch (Exception ex) { Console.WriteLine(ex.Message); }
|
||||||
|
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static async Task<Update> DownloadUpdateInfo(string pakName)
|
||||||
|
{
|
||||||
|
string url = "https://raw.githubusercontent.com/Wizzy69/installer/discord-bot-files/Versions";
|
||||||
|
List<string> info = await ServerCom.ReadTextFromURL(url);
|
||||||
|
VersionString? version = await VersionString.GetVersionOfPackageFromWeb(pakName);
|
||||||
|
|
||||||
|
if (version is null) return Update.Empty;
|
||||||
|
Update update = new Update(pakName, string.Join('\n', info), version);
|
||||||
|
return update;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static async Task Download(string pakName)
|
||||||
|
{
|
||||||
|
Console_Utilities.WriteColorText("An update was found for &g" + pakName + "&c. Version: &r" + (await VersionString.GetVersionOfPackageFromWeb(pakName))?.ToShortString() + "&c. Current Version: &y" + VersionString.GetVersionOfPackage(pakName)?.ToShortString());
|
||||||
|
await ConsoleCommandsHandler.ExecuteCommad("dwplug " + pakName);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
36
PluginManager/Online/Updates/Update.cs
Normal file
36
PluginManager/Online/Updates/Update.cs
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
using PluginManager.Online.Helpers;
|
||||||
|
|
||||||
|
namespace PluginManager.Online.Updates
|
||||||
|
{
|
||||||
|
public class Update
|
||||||
|
{
|
||||||
|
public static Update Empty = new Update(null, null, null);
|
||||||
|
public string pakName;
|
||||||
|
public string UpdateMessage;
|
||||||
|
|
||||||
|
public VersionString newVersion;
|
||||||
|
|
||||||
|
private bool isEmpty;
|
||||||
|
|
||||||
|
public Update(string pakName, string updateMessage, VersionString newVersion)
|
||||||
|
{
|
||||||
|
this.pakName = pakName;
|
||||||
|
UpdateMessage = updateMessage;
|
||||||
|
this.newVersion = newVersion;
|
||||||
|
|
||||||
|
if (pakName is null && updateMessage is null && newVersion is null)
|
||||||
|
isEmpty = true;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public override string ToString()
|
||||||
|
{
|
||||||
|
if (isEmpty)
|
||||||
|
throw new System.Exception("The update is EMPTY. Can not print information about an empty update !");
|
||||||
|
return $"Package Name: {this.pakName}\n" +
|
||||||
|
$"Update Message: {UpdateMessage}\n" +
|
||||||
|
$"Version: {newVersion.ToString()}";
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
using Discord;
|
using Discord;
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
|
||||||
|
|
||||||
namespace PluginManager.Others
|
namespace PluginManager.Others
|
||||||
{
|
{
|
||||||
@@ -32,16 +32,84 @@ namespace PluginManager.Others
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public class ProgressBar
|
public class ProgressBar
|
||||||
{
|
{
|
||||||
|
public ProgressBar(ProgressBarType type)
|
||||||
|
{
|
||||||
|
this.type = type;
|
||||||
|
}
|
||||||
|
|
||||||
public float Max { get; init; }
|
public float Max { get; init; }
|
||||||
public ConsoleColor Color { get; init; }
|
public ConsoleColor Color { get; init; }
|
||||||
public bool NoColor { get; init; }
|
public bool NoColor { get; init; }
|
||||||
|
public ProgressBarType type { get; set; }
|
||||||
|
|
||||||
|
private int BarLength = 32;
|
||||||
|
private int position = 1;
|
||||||
|
private bool positive = true;
|
||||||
|
|
||||||
public void Update(float progress, double speed = -1, string? unit = null)
|
private bool isRunning;
|
||||||
|
|
||||||
|
public async void Start()
|
||||||
|
{
|
||||||
|
if (type != ProgressBarType.NO_END)
|
||||||
|
throw new Exception("Only NO_END progress bar can use this method");
|
||||||
|
if (isRunning)
|
||||||
|
throw new Exception("This progress bar is already running");
|
||||||
|
|
||||||
|
isRunning = true;
|
||||||
|
while (isRunning)
|
||||||
|
{
|
||||||
|
UpdateNoEnd();
|
||||||
|
await System.Threading.Tasks.Task.Delay(100);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Stop()
|
||||||
|
{
|
||||||
|
if (type != ProgressBarType.NO_END)
|
||||||
|
throw new Exception("Only NO_END progress bar can use this method");
|
||||||
|
if (!isRunning)
|
||||||
|
throw new Exception("Can not stop a progressbar that did not start");
|
||||||
|
isRunning = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Update(float progress)
|
||||||
|
{
|
||||||
|
switch (type)
|
||||||
|
{
|
||||||
|
case ProgressBarType.NORMAL:
|
||||||
|
UpdateNormal(progress);
|
||||||
|
return;
|
||||||
|
case ProgressBarType.NO_END:
|
||||||
|
if (progress <= 99.9f)
|
||||||
|
UpdateNoEnd();
|
||||||
|
return;
|
||||||
|
default:
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void UpdateNoEnd()
|
||||||
{
|
{
|
||||||
Console.CursorLeft = 0;
|
Console.CursorLeft = 0;
|
||||||
Console.Write("[");
|
Console.Write("[");
|
||||||
Console.CursorLeft = 32;
|
for (int i = 1; i <= position; i++)
|
||||||
|
Console.Write(" ");
|
||||||
|
Console.Write("<==()==>");
|
||||||
|
position += positive ? 1 : -1;
|
||||||
|
for (int i = position; i <= BarLength - 1 - (positive ? 0 : 2); i++)
|
||||||
|
Console.Write(" ");
|
||||||
|
Console.Write("]");
|
||||||
|
|
||||||
|
|
||||||
|
if (position == BarLength - 1 || position == 1)
|
||||||
|
positive = !positive;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void UpdateNormal(float progress)
|
||||||
|
{
|
||||||
|
Console.CursorLeft = 0;
|
||||||
|
Console.Write("[");
|
||||||
|
Console.CursorLeft = BarLength;
|
||||||
Console.Write("]");
|
Console.Write("]");
|
||||||
Console.CursorLeft = 1;
|
Console.CursorLeft = 1;
|
||||||
float onechunk = 30.0f / Max;
|
float onechunk = 30.0f / Max;
|
||||||
@@ -55,25 +123,20 @@ namespace PluginManager.Others
|
|||||||
Console.Write("#");
|
Console.Write("#");
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int i = position; i <= 31; i++)
|
for (int i = position; i < BarLength; i++)
|
||||||
{
|
{
|
||||||
Console.BackgroundColor = NoColor ? ConsoleColor.Black : ConsoleColor.DarkGray;
|
Console.BackgroundColor = NoColor ? ConsoleColor.Black : ConsoleColor.DarkGray;
|
||||||
Console.CursorLeft = position++;
|
Console.CursorLeft = position++;
|
||||||
Console.Write(" ");
|
Console.Write(" ");
|
||||||
}
|
}
|
||||||
|
|
||||||
Console.CursorLeft = 35;
|
Console.CursorLeft = BarLength + 4;
|
||||||
Console.BackgroundColor = ConsoleColor.Black;
|
Console.BackgroundColor = ConsoleColor.Black;
|
||||||
if (speed is -1 || unit == null)
|
|
||||||
{
|
|
||||||
if (progress.CanAproximateTo(Max))
|
if (progress.CanAproximateTo(Max))
|
||||||
Console.Write(progress + " % ✓");
|
Console.Write(progress + " % ✓");
|
||||||
else
|
else
|
||||||
Console.Write(MathF.Round(progress, 2) + " % ");
|
Console.Write(MathF.Round(progress, 2) + " % ");
|
||||||
}
|
}
|
||||||
else
|
|
||||||
Console.Write(progress + $"{speed} {unit}/s ");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -84,7 +147,7 @@ namespace PluginManager.Others
|
|||||||
/// A way to create a table based on input data
|
/// A way to create a table based on input data
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="data">The List of arrays of strings that represent the rows.</param>
|
/// <param name="data">The List of arrays of strings that represent the rows.</param>
|
||||||
public static void FormatAndAlignTable(List<string[]> data, TableFormat format = TableFormat.CENTER_EACH_COLUMN_BASED)
|
public static void FormatAndAlignTable(List<string[]> data, TableFormat format)
|
||||||
{
|
{
|
||||||
if (format == TableFormat.CENTER_EACH_COLUMN_BASED)
|
if (format == TableFormat.CENTER_EACH_COLUMN_BASED)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -31,3 +31,6 @@ public enum PluginType { Command, Event, Unknown }
|
|||||||
public enum UnzipProgressType { PercentageFromNumberOfFiles, PercentageFromTotalSize }
|
public enum UnzipProgressType { PercentageFromNumberOfFiles, PercentageFromTotalSize }
|
||||||
|
|
||||||
public enum TableFormat { CENTER_EACH_COLUMN_BASED, CENTER_OVERALL_LENGTH, DEFAULT }
|
public enum TableFormat { CENTER_EACH_COLUMN_BASED, CENTER_OVERALL_LENGTH, DEFAULT }
|
||||||
|
|
||||||
|
public enum SaveType { NORMAL, BACKUP }
|
||||||
|
public enum ProgressBarType { NORMAL, NO_END }
|
||||||
@@ -26,17 +26,17 @@ namespace PluginManager.Others
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// The location for all logs
|
/// The location for all logs
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static readonly string logFolder = @"./Output/Logs/";
|
public static readonly string logFolder = @"./Data/Output/Logs/";
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The location for all errors
|
/// The location for all errors
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static readonly string errFolder = @"./Output/Errors/";
|
public static readonly string errFolder = @"./Data/Output/Errors/";
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Archives folder
|
/// Archives folder
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static readonly string pakFolder = @"./Data/Resources/PAK/";
|
public static readonly string pakFolder = @"./Data/PAKS/";
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Beta testing folder
|
/// Beta testing folder
|
||||||
@@ -50,16 +50,41 @@ namespace PluginManager.Others
|
|||||||
/// <param name="FileName">The file name that is inside the archive or its full path</param>
|
/// <param name="FileName">The file name that is inside the archive or its full path</param>
|
||||||
/// <param name="archFile">The archive location from the PAKs folder</param>
|
/// <param name="archFile">The archive location from the PAKs folder</param>
|
||||||
/// <returns>A string that represents the content of the file or null if the file does not exists or it has no content</returns>
|
/// <returns>A string that represents the content of the file or null if the file does not exists or it has no content</returns>
|
||||||
public static Stream? ReadFromPakAsync(string FileName, string archFile)
|
public static async Task<string> ReadFromPakAsync(string FileName, string archFile)
|
||||||
{
|
{
|
||||||
archFile = pakFolder + archFile;
|
archFile = pakFolder + archFile;
|
||||||
Directory.CreateDirectory(pakFolder);
|
if (!File.Exists(archFile))
|
||||||
if (!File.Exists(archFile)) throw new FileNotFoundException("Failed to load file !");
|
throw new Exception("Failed to load file !");
|
||||||
|
|
||||||
using ZipArchive archive = ZipFile.OpenRead(archFile);
|
try
|
||||||
ZipArchiveEntry? entry = archive.GetEntry(FileName);
|
{
|
||||||
return entry?.Open();
|
string textValue = null;
|
||||||
|
using (var fs = new FileStream(archFile, FileMode.Open))
|
||||||
|
using (var zip = new ZipArchive(fs, ZipArchiveMode.Read))
|
||||||
|
foreach (var entry in zip.Entries)
|
||||||
|
{
|
||||||
|
if (entry.Name == FileName || entry.FullName == FileName)
|
||||||
|
{
|
||||||
|
using (Stream s = entry.Open())
|
||||||
|
using (StreamReader reader = new StreamReader(s))
|
||||||
|
{
|
||||||
|
textValue = await reader.ReadToEndAsync();
|
||||||
|
reader.Close();
|
||||||
|
s.Close();
|
||||||
|
fs.Close();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return textValue;
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
await Task.Delay(100);
|
||||||
|
return await ReadFromPakAsync(FileName, archFile);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Write logs to file
|
/// Write logs to file
|
||||||
@@ -68,7 +93,7 @@ namespace PluginManager.Others
|
|||||||
public static void WriteLogFile(string LogMessage)
|
public static void WriteLogFile(string LogMessage)
|
||||||
{
|
{
|
||||||
string logsPath = logFolder + $"{DateTime.Today.ToShortDateString().Replace("/", "-").Replace("\\", "-")} Log.txt";
|
string logsPath = logFolder + $"{DateTime.Today.ToShortDateString().Replace("/", "-").Replace("\\", "-")} Log.txt";
|
||||||
if (!Directory.Exists(logFolder)) Directory.CreateDirectory(logFolder);
|
Directory.CreateDirectory(logFolder);
|
||||||
File.AppendAllText(logsPath, LogMessage + " \n");
|
File.AppendAllText(logsPath, LogMessage + " \n");
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -79,10 +104,15 @@ namespace PluginManager.Others
|
|||||||
public static void WriteErrFile(string ErrMessage)
|
public static void WriteErrFile(string ErrMessage)
|
||||||
{
|
{
|
||||||
string errPath = errFolder + $"{DateTime.Today.ToShortDateString().Replace("/", "-").Replace("\\", "-")} Error.txt";
|
string errPath = errFolder + $"{DateTime.Today.ToShortDateString().Replace("/", "-").Replace("\\", "-")} Error.txt";
|
||||||
if (!Directory.Exists(errFolder)) Directory.CreateDirectory(errFolder);
|
Directory.CreateDirectory(errFolder);
|
||||||
File.AppendAllText(errPath, ErrMessage + " \n");
|
File.AppendAllText(errPath, ErrMessage + " \n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void WriteErrFile(this Exception ex)
|
||||||
|
{
|
||||||
|
WriteErrFile(ex.ToString());
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Merge one array of strings into one string
|
/// Merge one array of strings into one string
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -164,9 +194,7 @@ namespace PluginManager.Others
|
|||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public static async Task ExtractArchive(string zip, string folder, IProgress<float> progress, UnzipProgressType type)
|
public static async Task ExtractArchive(string zip, string folder, IProgress<float> progress, UnzipProgressType type)
|
||||||
{
|
{
|
||||||
if (!Directory.Exists(folder)) Directory.CreateDirectory(folder);
|
Directory.CreateDirectory(folder);
|
||||||
|
|
||||||
|
|
||||||
using (ZipArchive archive = ZipFile.OpenRead(zip))
|
using (ZipArchive archive = ZipFile.OpenRead(zip))
|
||||||
{
|
{
|
||||||
if (type == UnzipProgressType.PercentageFromNumberOfFiles)
|
if (type == UnzipProgressType.PercentageFromNumberOfFiles)
|
||||||
@@ -175,7 +203,7 @@ namespace PluginManager.Others
|
|||||||
int currentZIPFile = 0;
|
int currentZIPFile = 0;
|
||||||
foreach (ZipArchiveEntry entry in archive.Entries)
|
foreach (ZipArchiveEntry entry in archive.Entries)
|
||||||
{
|
{
|
||||||
if (entry.FullName.EndsWith("/"))
|
if (entry.FullName.EndsWith("/")) // it is a folder
|
||||||
Directory.CreateDirectory(Path.Combine(folder, entry.FullName));
|
Directory.CreateDirectory(Path.Combine(folder, entry.FullName));
|
||||||
|
|
||||||
else
|
else
|
||||||
@@ -190,6 +218,7 @@ namespace PluginManager.Others
|
|||||||
|
|
||||||
currentZIPFile++;
|
currentZIPFile++;
|
||||||
await Task.Delay(10);
|
await Task.Delay(10);
|
||||||
|
if (progress != null)
|
||||||
progress.Report((float)currentZIPFile / totalZIPFiles * 100);
|
progress.Report((float)currentZIPFile / totalZIPFiles * 100);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -220,6 +249,7 @@ namespace PluginManager.Others
|
|||||||
}
|
}
|
||||||
|
|
||||||
await Task.Delay(10);
|
await Task.Delay(10);
|
||||||
|
if (progress != null)
|
||||||
progress.Report((float)currentSize / zipSize * 100);
|
progress.Report((float)currentSize / zipSize * 100);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -261,9 +291,9 @@ namespace PluginManager.Others
|
|||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public static async Task SaveToJsonFile<T>(string file, T Data)
|
public static async Task SaveToJsonFile<T>(string file, T Data)
|
||||||
{
|
{
|
||||||
var s = File.OpenWrite(file);
|
MemoryStream str = new MemoryStream();
|
||||||
await JsonSerializer.SerializeAsync(s, Data, typeof(T), new JsonSerializerOptions { WriteIndented = true });
|
await JsonSerializer.SerializeAsync(str, Data, typeof(T), new JsonSerializerOptions { WriteIndented = true });
|
||||||
s.Close();
|
await File.WriteAllBytesAsync(file, str.ToArray());
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -276,8 +306,7 @@ namespace PluginManager.Others
|
|||||||
{
|
{
|
||||||
Stream text;
|
Stream text;
|
||||||
if (File.Exists(input))
|
if (File.Exists(input))
|
||||||
text = File.Open(input, FileMode.OpenOrCreate);
|
text = new MemoryStream(await File.ReadAllBytesAsync(input));
|
||||||
|
|
||||||
else
|
else
|
||||||
text = new MemoryStream(Encoding.ASCII.GetBytes(input));
|
text = new MemoryStream(Encoding.ASCII.GetBytes(input));
|
||||||
text.Position = 0;
|
text.Position = 0;
|
||||||
|
|||||||
@@ -16,10 +16,6 @@ Plugin Types:
|
|||||||
1. Commands
|
1. Commands
|
||||||
2. Events
|
2. Events
|
||||||
|
|
||||||
Project Structure
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
### How to create a plugin
|
### How to create a plugin
|
||||||
|
|
||||||
First of all, Create a new project (class library) in Visual Studio.
|
First of all, Create a new project (class library) in Visual Studio.
|
||||||
|
|||||||
@@ -7,20 +7,6 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DiscordBot", "DiscordBot\Di
|
|||||||
EndProject
|
EndProject
|
||||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PluginManager", "PluginManager\PluginManager.csproj", "{EDD4D9B3-98DD-4367-A09F-D1C5ACB61132}"
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PluginManager", "PluginManager\PluginManager.csproj", "{EDD4D9B3-98DD-4367-A09F-D1C5ACB61132}"
|
||||||
EndProject
|
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_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("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EVE_LevelingSystem", "EVE_LevelingSystem\EVE_LevelingSystem.csproj", "{EEC445DC-0C4B-43EA-8694-606BA0390B77}"
|
|
||||||
EndProject
|
|
||||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CMD_LevelingSystem", "CMD_LevelingSystem\CMD_LevelingSystem.csproj", "{1A4E49FF-9A0A-4C54-AF35-CFFBA64353D9}"
|
|
||||||
EndProject
|
|
||||||
Global
|
Global
|
||||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
Debug|Any CPU = Debug|Any CPU
|
Debug|Any CPU = Debug|Any CPU
|
||||||
@@ -35,34 +21,10 @@ Global
|
|||||||
{EDD4D9B3-98DD-4367-A09F-D1C5ACB61132}.Debug|Any CPU.Build.0 = 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.ActiveCfg = Release|Any CPU
|
||||||
{EDD4D9B3-98DD-4367-A09F-D1C5ACB61132}.Release|Any CPU.Build.0 = Release|Any CPU
|
{EDD4D9B3-98DD-4367-A09F-D1C5ACB61132}.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
|
|
||||||
{EEC445DC-0C4B-43EA-8694-606BA0390B77}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
|
||||||
{EEC445DC-0C4B-43EA-8694-606BA0390B77}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
|
||||||
{EEC445DC-0C4B-43EA-8694-606BA0390B77}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
|
||||||
{EEC445DC-0C4B-43EA-8694-606BA0390B77}.Release|Any CPU.Build.0 = Release|Any CPU
|
|
||||||
{1A4E49FF-9A0A-4C54-AF35-CFFBA64353D9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
|
||||||
{1A4E49FF-9A0A-4C54-AF35-CFFBA64353D9}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
|
||||||
{1A4E49FF-9A0A-4C54-AF35-CFFBA64353D9}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
|
||||||
{1A4E49FF-9A0A-4C54-AF35-CFFBA64353D9}.Release|Any CPU.Build.0 = Release|Any CPU
|
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(SolutionProperties) = preSolution
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
HideSolutionNode = FALSE
|
HideSolutionNode = FALSE
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(NestedProjects) = preSolution
|
|
||||||
{A290C028-77C4-4D1D-AB43-DDFE6ABD9012} = {1862ABD5-7C30-4F15-A561-45AC8A9CA10E}
|
|
||||||
{449FA364-0B72-43FF-B3A3-806E2916200E} = {1862ABD5-7C30-4F15-A561-45AC8A9CA10E}
|
|
||||||
{E26C87A4-3DD6-4B58-B14B-C8E086B852F9} = {449FA364-0B72-43FF-B3A3-806E2916200E}
|
|
||||||
{B1B4976E-5112-4217-B57B-3A03C5207B6E} = {449FA364-0B72-43FF-B3A3-806E2916200E}
|
|
||||||
{EEC445DC-0C4B-43EA-8694-606BA0390B77} = {A290C028-77C4-4D1D-AB43-DDFE6ABD9012}
|
|
||||||
{1A4E49FF-9A0A-4C54-AF35-CFFBA64353D9} = {449FA364-0B72-43FF-B3A3-806E2916200E}
|
|
||||||
EndGlobalSection
|
|
||||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||||
SolutionGuid = {3FB3C5DE-ED21-4D2E-ABDD-3A00EE4A2FFF}
|
SolutionGuid = {3FB3C5DE-ED21-4D2E-ABDD-3A00EE4A2FFF}
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
|
|||||||
Reference in New Issue
Block a user