Update poise version (with refactor)

set some command to ephemeral
Add roles command
Do some refactoring and minor changes to commands
This commit is contained in:
Tom 2023-04-07 19:06:14 +02:00
parent 12b934fcb4
commit 5caf820dc0
17 changed files with 288 additions and 123 deletions

232
Cargo.lock generated
View file

@ -165,16 +165,16 @@ checksum = "ec8a7b6a70fde80372154c65702f00a0f56f3e1c36abbc6c440484be248856db"
[[package]] [[package]]
name = "cached" name = "cached"
version = "0.38.0" version = "0.42.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "27e6092f8c7ba6e65a46f6f26d7d7997201d3a6f0e69ff5d2440b930d7c0513a" checksum = "5e5877db5d1af7fae60d06b5db9430b68056a69b3582a0be8e3691e87654aeb6"
dependencies = [ dependencies = [
"async-trait", "async-trait",
"async_once", "async_once",
"cached_proc_macro", "cached_proc_macro",
"cached_proc_macro_types", "cached_proc_macro_types",
"futures", "futures",
"hashbrown", "hashbrown 0.13.2",
"instant", "instant",
"lazy_static", "lazy_static",
"once_cell", "once_cell",
@ -184,12 +184,13 @@ dependencies = [
[[package]] [[package]]
name = "cached_proc_macro" name = "cached_proc_macro"
version = "0.15.0" version = "0.16.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "751f7f4e7a091545e7f6c65bacc404eaee7e87bfb1f9ece234a1caa173dc16f2" checksum = "e10ca87c81aaa3a949dbbe2b5e6c2c45dbc94ba4897e45ea31ff9ec5087be3dc"
dependencies = [ dependencies = [
"cached_proc_macro_types", "cached_proc_macro_types",
"darling 0.13.4", "darling",
"proc-macro2",
"quote", "quote",
"syn", "syn",
] ]
@ -391,43 +392,19 @@ dependencies = [
[[package]] [[package]]
name = "darling" name = "darling"
version = "0.13.4" version = "0.14.3"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a01d95850c592940db9b8194bc39f4bc0e89dee5c4265e4b1807c34a9aba453c" checksum = "c0808e1bd8671fb44a113a14e13497557533369847788fa2ae912b6ebfce9fa8"
dependencies = [ dependencies = [
"darling_core 0.13.4", "darling_core",
"darling_macro 0.13.4", "darling_macro",
]
[[package]]
name = "darling"
version = "0.14.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4529658bdda7fd6769b8614be250cdcfc3aeb0ee72fe66f9e41e5e5eb73eac02"
dependencies = [
"darling_core 0.14.1",
"darling_macro 0.14.1",
] ]
[[package]] [[package]]
name = "darling_core" name = "darling_core"
version = "0.13.4" version = "0.14.3"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "859d65a907b6852c9361e3185c862aae7fafd2887876799fa55f5f99dc40d610" checksum = "001d80444f28e193f30c2f293455da62dcf9a6b29918a4253152ae2b1de592cb"
dependencies = [
"fnv",
"ident_case",
"proc-macro2",
"quote",
"strsim",
"syn",
]
[[package]]
name = "darling_core"
version = "0.14.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "649c91bc01e8b1eac09fb91e8dbc7d517684ca6be8ebc75bb9cafc894f9fdb6f"
dependencies = [ dependencies = [
"fnv", "fnv",
"ident_case", "ident_case",
@ -439,22 +416,11 @@ dependencies = [
[[package]] [[package]]
name = "darling_macro" name = "darling_macro"
version = "0.13.4" version = "0.14.3"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9c972679f83bdf9c42bd905396b6c3588a843a17f0f16dfcfa3e2c5d57441835" checksum = "b36230598a2d5de7ec1c6f51f72d8a99a9208daff41de2084d06e3fd3ea56685"
dependencies = [ dependencies = [
"darling_core 0.13.4", "darling_core",
"quote",
"syn",
]
[[package]]
name = "darling_macro"
version = "0.14.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ddfc69c5bfcbd2fc09a0f38451d2daf0e372e367986a83906d1b0dbc88134fb5"
dependencies = [
"darling_core 0.14.1",
"quote", "quote",
"syn", "syn",
] ]
@ -466,7 +432,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3495912c9c1ccf2e18976439f4443f3fee0fd61f424ff99fde6a66b15ecb448f" checksum = "3495912c9c1ccf2e18976439f4443f3fee0fd61f424ff99fde6a66b15ecb448f"
dependencies = [ dependencies = [
"cfg-if", "cfg-if",
"hashbrown", "hashbrown 0.12.3",
"lock_api", "lock_api",
"parking_lot_core", "parking_lot_core",
"serde", "serde",
@ -761,6 +727,12 @@ dependencies = [
"ahash", "ahash",
] ]
[[package]]
name = "hashbrown"
version = "0.13.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e"
[[package]] [[package]]
name = "hermit-abi" name = "hermit-abi"
version = "0.1.19" version = "0.1.19"
@ -891,7 +863,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "10a35a97730320ffe8e2d410b5d3b69279b98d2c14bdb8b70ea89ecf7888d41e" checksum = "10a35a97730320ffe8e2d410b5d3b69279b98d2c14bdb8b70ea89ecf7888d41e"
dependencies = [ dependencies = [
"autocfg", "autocfg",
"hashbrown", "hashbrown 0.12.3",
] ]
[[package]] [[package]]
@ -1074,11 +1046,11 @@ dependencies = [
[[package]] [[package]]
name = "lru" name = "lru"
version = "0.7.8" version = "0.8.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e999beba7b6e8345721bd280141ed958096a2e4abdf74f67ff4ce49b4b54e47a" checksum = "b6e8aaa3f231bb4bd57b84b2d5dc3ae7f350265df8aa96492e0bc394a1571909"
dependencies = [ dependencies = [
"hashbrown", "hashbrown 0.12.3",
] ]
[[package]] [[package]]
@ -1142,14 +1114,14 @@ dependencies = [
"libc", "libc",
"log", "log",
"wasi 0.11.0+wasi-snapshot-preview1", "wasi 0.11.0+wasi-snapshot-preview1",
"windows-sys", "windows-sys 0.36.1",
] ]
[[package]] [[package]]
name = "mysql_async" name = "mysql_async"
version = "0.30.0" version = "0.31.3"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "456207bb9636a0fdade67a64cea7bdebe6730c3c16ee5e34f2c481838ee5a39e" checksum = "2975442c70450b8f3a0400216321f6ab7b8bda177579f533d312ac511f913655"
dependencies = [ dependencies = [
"bytes", "bytes",
"crossbeam", "crossbeam",
@ -1166,6 +1138,7 @@ dependencies = [
"pem", "pem",
"percent-encoding", "percent-encoding",
"pin-project", "pin-project",
"priority-queue",
"serde", "serde",
"serde_json", "serde_json",
"socket2", "socket2",
@ -1179,9 +1152,9 @@ dependencies = [
[[package]] [[package]]
name = "mysql_common" name = "mysql_common"
version = "0.29.1" version = "0.29.2"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "522f2f30f72de409fc04f88df25a031f98cfc5c398a94e0b892cabb33a1464cb" checksum = "9006c95034ccf7b903d955f210469119f6c3477fc9c9e7a7845ce38a3e665c2a"
dependencies = [ dependencies = [
"base64", "base64",
"bigdecimal", "bigdecimal",
@ -1205,7 +1178,7 @@ dependencies = [
"saturating", "saturating",
"serde", "serde",
"serde_json", "serde_json",
"sha-1", "sha1",
"sha2", "sha2",
"smallvec", "smallvec",
"subprocess", "subprocess",
@ -1380,7 +1353,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ccd746e37177e1711c20dd619a1620f34f5c8b569c53590a72dedd5344d8924a" checksum = "ccd746e37177e1711c20dd619a1620f34f5c8b569c53590a72dedd5344d8924a"
dependencies = [ dependencies = [
"dlv-list", "dlv-list",
"hashbrown", "hashbrown 0.12.3",
] ]
[[package]] [[package]]
@ -1403,7 +1376,7 @@ dependencies = [
"libc", "libc",
"redox_syscall", "redox_syscall",
"smallvec", "smallvec",
"windows-sys", "windows-sys 0.36.1",
] ]
[[package]] [[package]]
@ -1517,9 +1490,9 @@ checksum = "1df8c4ec4b0627e53bdf214615ad287367e482558cf84b109250b37464dc03ae"
[[package]] [[package]]
name = "poise" name = "poise"
version = "0.3.0" version = "0.5.2"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f6c01d22dcda434b0dfe956c60f6ac9b0352c4c2f4af852afb3155a971cd306d" checksum = "2ca787e4e516076de1995a83ee05fbdfed71d072ea0da3df018318db42a87803"
dependencies = [ dependencies = [
"async-trait", "async-trait",
"derivative", "derivative",
@ -1536,11 +1509,11 @@ dependencies = [
[[package]] [[package]]
name = "poise_macros" name = "poise_macros"
version = "0.3.0" version = "0.5.2"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "52ff861b6a52ec47bc54eb17424c025feeb040e82836036276c25dda045a8a0c" checksum = "b80c1f4e04114527f9d41ed6bb31707a095276f51bb0aef3ca11f062b25a67c4"
dependencies = [ dependencies = [
"darling 0.14.1", "darling",
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn", "syn",
@ -1552,6 +1525,16 @@ version = "0.2.16"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "eb9f9e6e233e5c4a35559a617bf40a4ec447db2e84c20b55a6f83167b7e57872" checksum = "eb9f9e6e233e5c4a35559a617bf40a4ec447db2e84c20b55a6f83167b7e57872"
[[package]]
name = "priority-queue"
version = "1.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5ca9c6be70d989d21a136eb86c2d83e4b328447fac4a88dace2143c179c86267"
dependencies = [
"autocfg",
"indexmap",
]
[[package]] [[package]]
name = "proc-macro-hack" name = "proc-macro-hack"
version = "0.5.19" version = "0.5.19"
@ -1560,9 +1543,9 @@ checksum = "dbf0c48bc1d91375ae5c3cd81e3722dff1abcf81a30960240640d223f59fe0e5"
[[package]] [[package]]
name = "proc-macro2" name = "proc-macro2"
version = "1.0.43" version = "1.0.51"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0a2ca2c61bc9f3d74d2886294ab7b9853abd9c1ad903a3ac7815c58989bb7bab" checksum = "5d727cae5b39d21da60fa540906919ad737832fe0b1c165da3a34d6548c849d6"
dependencies = [ dependencies = [
"unicode-ident", "unicode-ident",
] ]
@ -1790,7 +1773,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "88d6731146462ea25d9244b2ed5fd1d716d25c52e4d54aa4fb0f3c4e9854dbe2" checksum = "88d6731146462ea25d9244b2ed5fd1d716d25c52e4d54aa4fb0f3c4e9854dbe2"
dependencies = [ dependencies = [
"lazy_static", "lazy_static",
"windows-sys", "windows-sys 0.36.1",
] ]
[[package]] [[package]]
@ -1928,6 +1911,17 @@ dependencies = [
"digest", "digest",
] ]
[[package]]
name = "sha1"
version = "0.10.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "006769ba83e921b3085caa8334186b00cf92b4cb1a6cf4632fbccc8eff5c7549"
dependencies = [
"cfg-if",
"cpufeatures",
"digest",
]
[[package]] [[package]]
name = "sha2" name = "sha2"
version = "0.10.2" version = "0.10.2"
@ -1956,13 +1950,13 @@ dependencies = [
[[package]] [[package]]
name = "simplelog" name = "simplelog"
version = "0.11.2" version = "0.12.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c1348164456f72ca0116e4538bdaabb0ddb622c7d9f16387c725af3e96d6001c" checksum = "48dfff04aade74dd495b007c831cd6f4e0cee19c344dd9dc0884c0289b70a786"
dependencies = [ dependencies = [
"chrono",
"log", "log",
"termcolor", "termcolor",
"time 0.3.13",
] ]
[[package]] [[package]]
@ -2099,8 +2093,15 @@ dependencies = [
"libc", "libc",
"num_threads", "num_threads",
"serde", "serde",
"time-macros",
] ]
[[package]]
name = "time-macros"
version = "0.2.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "42657b1a6f4d817cda8e7a0ace261fe0cc946cf3a80314390b22cc61ae080792"
[[package]] [[package]]
name = "tinyvec" name = "tinyvec"
version = "1.6.0" version = "1.6.0"
@ -2118,9 +2119,9 @@ checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c"
[[package]] [[package]]
name = "tokio" name = "tokio"
version = "1.20.1" version = "1.26.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7a8325f63a7d4774dd041e363b2409ed1c5cbbd0f867795e661df066b2b0a581" checksum = "03201d01c3c27a29c8a5cee5b55a93ddae1ccf6f08f65365c2c918f8c1b76f64"
dependencies = [ dependencies = [
"autocfg", "autocfg",
"bytes", "bytes",
@ -2128,12 +2129,11 @@ dependencies = [
"memchr", "memchr",
"mio", "mio",
"num_cpus", "num_cpus",
"once_cell",
"pin-project-lite", "pin-project-lite",
"signal-hook-registry", "signal-hook-registry",
"socket2", "socket2",
"tokio-macros", "tokio-macros",
"winapi", "windows-sys 0.45.0",
] ]
[[package]] [[package]]
@ -2513,43 +2513,109 @@ version = "0.36.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ea04155a16a59f9eab786fe12a4a450e75cdb175f9e0d80da1e17db09f55b8d2" checksum = "ea04155a16a59f9eab786fe12a4a450e75cdb175f9e0d80da1e17db09f55b8d2"
dependencies = [ dependencies = [
"windows_aarch64_msvc", "windows_aarch64_msvc 0.36.1",
"windows_i686_gnu", "windows_i686_gnu 0.36.1",
"windows_i686_msvc", "windows_i686_msvc 0.36.1",
"windows_x86_64_gnu", "windows_x86_64_gnu 0.36.1",
"windows_x86_64_msvc", "windows_x86_64_msvc 0.36.1",
] ]
[[package]]
name = "windows-sys"
version = "0.45.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0"
dependencies = [
"windows-targets",
]
[[package]]
name = "windows-targets"
version = "0.42.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8e2522491fbfcd58cc84d47aeb2958948c4b8982e9a2d8a2a35bbaed431390e7"
dependencies = [
"windows_aarch64_gnullvm",
"windows_aarch64_msvc 0.42.1",
"windows_i686_gnu 0.42.1",
"windows_i686_msvc 0.42.1",
"windows_x86_64_gnu 0.42.1",
"windows_x86_64_gnullvm",
"windows_x86_64_msvc 0.42.1",
]
[[package]]
name = "windows_aarch64_gnullvm"
version = "0.42.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8c9864e83243fdec7fc9c5444389dcbbfd258f745e7853198f365e3c4968a608"
[[package]] [[package]]
name = "windows_aarch64_msvc" name = "windows_aarch64_msvc"
version = "0.36.1" version = "0.36.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9bb8c3fd39ade2d67e9874ac4f3db21f0d710bee00fe7cab16949ec184eeaa47" checksum = "9bb8c3fd39ade2d67e9874ac4f3db21f0d710bee00fe7cab16949ec184eeaa47"
[[package]]
name = "windows_aarch64_msvc"
version = "0.42.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4c8b1b673ffc16c47a9ff48570a9d85e25d265735c503681332589af6253c6c7"
[[package]] [[package]]
name = "windows_i686_gnu" name = "windows_i686_gnu"
version = "0.36.1" version = "0.36.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "180e6ccf01daf4c426b846dfc66db1fc518f074baa793aa7d9b9aaeffad6a3b6" checksum = "180e6ccf01daf4c426b846dfc66db1fc518f074baa793aa7d9b9aaeffad6a3b6"
[[package]]
name = "windows_i686_gnu"
version = "0.42.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "de3887528ad530ba7bdbb1faa8275ec7a1155a45ffa57c37993960277145d640"
[[package]] [[package]]
name = "windows_i686_msvc" name = "windows_i686_msvc"
version = "0.36.1" version = "0.36.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e2e7917148b2812d1eeafaeb22a97e4813dfa60a3f8f78ebe204bcc88f12f024" checksum = "e2e7917148b2812d1eeafaeb22a97e4813dfa60a3f8f78ebe204bcc88f12f024"
[[package]]
name = "windows_i686_msvc"
version = "0.42.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bf4d1122317eddd6ff351aa852118a2418ad4214e6613a50e0191f7004372605"
[[package]] [[package]]
name = "windows_x86_64_gnu" name = "windows_x86_64_gnu"
version = "0.36.1" version = "0.36.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4dcd171b8776c41b97521e5da127a2d86ad280114807d0b2ab1e462bc764d9e1" checksum = "4dcd171b8776c41b97521e5da127a2d86ad280114807d0b2ab1e462bc764d9e1"
[[package]]
name = "windows_x86_64_gnu"
version = "0.42.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c1040f221285e17ebccbc2591ffdc2d44ee1f9186324dd3e84e99ac68d699c45"
[[package]]
name = "windows_x86_64_gnullvm"
version = "0.42.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "628bfdf232daa22b0d64fdb62b09fcc36bb01f05a3939e20ab73aaf9470d0463"
[[package]] [[package]]
name = "windows_x86_64_msvc" name = "windows_x86_64_msvc"
version = "0.36.1" version = "0.36.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c811ca4a8c853ef420abd8592ba53ddbbac90410fab6903b3e79972a631f7680" checksum = "c811ca4a8c853ef420abd8592ba53ddbbac90410fab6903b3e79972a631f7680"
[[package]]
name = "windows_x86_64_msvc"
version = "0.42.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "447660ad36a13288b1db4d4248e857b510e8c3a225c822ba4fb748c0aafecffd"
[[package]] [[package]]
name = "winreg" name = "winreg"
version = "0.10.1" version = "0.10.1"

View file

@ -6,16 +6,16 @@ edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies] [dependencies]
cached = "0.38" cached = "0.42"
chrono = "0.4" chrono = "0.4"
config = "0.13" config = "0.13"
futures = { version = "0.3", default-features = false } futures = { version = "0.3", default-features = false }
glob = "0.3" glob = "0.3"
lazy_static = "1" lazy_static = "1"
log = "0.4" log = "0.4"
mysql_async = "0.30" mysql_async = "0.31"
simplelog = "0.11.1" simplelog = "0.12"
poise = { version = "0.3", features = ["collector"] } poise = { version = "0.5", features = ["collector"] }
rand = "0.8" rand = "0.8"
regex = {version="1"} regex = {version="1"}
reqwest = "0.11" reqwest = "0.11"

View file

@ -29,7 +29,7 @@ pub async fn get_command(sign: &str, con: &mut Conn) -> Result<Option<String>, m
Ok(a) Ok(a)
} }
// F1TV links throughout the seasons // Run any of a collection of arbitrary commands
#[poise::command(slash_command)] #[poise::command(slash_command)]
pub async fn coms( pub async fn coms(
ctx: Context<'_>, ctx: Context<'_>,

View file

@ -117,7 +117,7 @@ async fn get_events() -> Vec<Events> {
} }
// All events filtered (Eurosport, NFL, Viaplay) // All events filtered (Eurosport, NFL, Viaplay)
#[poise::command(slash_command)] #[poise::command(slash_command, ephemeral)]
pub async fn all( pub async fn all(
ctx: Context<'_>, ctx: Context<'_>,
#[description = "Filter sessions for when they are/were happening"] timeframe: Timeframe, #[description = "Filter sessions for when they are/were happening"] timeframe: Timeframe,

View file

@ -151,8 +151,8 @@ pub async fn get_schedule() -> Option<Vec<CmoreEvent>> {
result result
} }
//Cmore events listing // Cmore events listing
#[poise::command(slash_command)] #[poise::command(slash_command, ephemeral)]
pub async fn cmore( pub async fn cmore(
ctx: Context<'_>, ctx: Context<'_>,
#[description = "Filter sessions for when they are/were happening, defaults to future"] #[description = "Filter sessions for when they are/were happening, defaults to future"]

View file

@ -298,7 +298,7 @@ pub async fn get_eurosport_events(url: String) -> Option<Vec<ESEvents>> {
} }
// Eurosport player events // Eurosport player events
#[poise::command(slash_command)] #[poise::command(slash_command, ephemeral)]
pub async fn eurosport( pub async fn eurosport(
ctx: Context<'_>, ctx: Context<'_>,
#[description = "Filter sessions for when they are/were happening, defaults to future"] #[description = "Filter sessions for when they are/were happening, defaults to future"]

View file

@ -12,6 +12,7 @@ async fn autocomplete_season<'a>(
) -> impl Iterator<Item = String> + 'a { ) -> impl Iterator<Item = String> + 'a {
(1981..2023) (1981..2023)
.map(|n: u32| n.to_string()) .map(|n: u32| n.to_string())
.rev()
.filter(move |e| e.starts_with(&partial)) .filter(move |e| e.starts_with(&partial))
.map(|e| e.to_string()) .map(|e| e.to_string())
} }
@ -195,7 +196,7 @@ async fn get_sessions(season: String) -> Option<Season> {
} }
// F1TV links throughout the seasons // F1TV links throughout the seasons
#[poise::command(slash_command)] #[poise::command(slash_command, ephemeral)]
pub async fn f1( pub async fn f1(
ctx: Context<'_>, ctx: Context<'_>,
#[description = "Which season to pull from?"] #[description = "Which season to pull from?"]
@ -237,7 +238,7 @@ pub async fn f1(
}) })
.await?; .await?;
while let Some(mci) = serenity::CollectComponentInteraction::new(ctx.discord()) while let Some(mci) = serenity::CollectComponentInteraction::new(ctx)
.channel_id(ctx.channel_id()) .channel_id(ctx.channel_id())
.filter(move |mci| mci.data.custom_id == content_id.to_string()) .filter(move |mci| mci.data.custom_id == content_id.to_string())
.await .await
@ -247,7 +248,7 @@ pub async fn f1(
let ses = get_event(session).await; let ses = get_event(session).await;
println!("Now responding to interaction"); println!("Now responding to interaction");
match mci match mci
.create_interaction_response(ctx.discord(), |ir| { .create_interaction_response(ctx, |ir| {
ir.kind(serenity::InteractionResponseType::UpdateMessage) ir.kind(serenity::InteractionResponseType::UpdateMessage)
.interaction_response_data(|m| match ses { .interaction_response_data(|m| match ses {
None => m.content("Unable to get these events :("), None => m.content("Unable to get these events :("),

View file

@ -70,7 +70,8 @@ pub enum Timeframe {
"nfl::nfl", "nfl::nfl",
"cmore::cmore", "cmore::cmore",
"all::all" "all::all"
) ),
ephemeral
)] )]
pub async fn links(ctx: Context<'_>) -> Result<(), Error> { pub async fn links(ctx: Context<'_>) -> Result<(), Error> {
ctx.say("Hello there!").await?; ctx.say("Hello there!").await?;

View file

@ -196,7 +196,7 @@ async fn get_schedule(week: u8) -> Option<Vec<NFLEvent>> {
} }
//NFL events listing //NFL events listing
#[poise::command(slash_command)] #[poise::command(slash_command, ephemeral)]
pub async fn nfl( pub async fn nfl(
ctx: Context<'_>, ctx: Context<'_>,
#[description = "Filter sessions for when they are/were happening, defaults to future"] #[description = "Filter sessions for when they are/were happening, defaults to future"]

View file

@ -241,7 +241,7 @@ async fn autocomplete_sport<'a>(
} }
//Viaplay events listing //Viaplay events listing
#[poise::command(slash_command)] #[poise::command(slash_command, ephemeral)]
pub async fn viaplay( pub async fn viaplay(
ctx: Context<'_>, ctx: Context<'_>,
#[description = "Filter sessions for when they are/were happening, defaults to future"] #[description = "Filter sessions for when they are/were happening, defaults to future"]

View file

@ -85,7 +85,7 @@ async fn get_schedule() -> Result<Option<WRC>, Error> {
} }
// WRC sessions // WRC sessions
#[poise::command(slash_command)] #[poise::command(slash_command, ephemeral)]
pub async fn wrc( pub async fn wrc(
ctx: Context<'_>, ctx: Context<'_>,
// #[description = "Filter sessions for when they are/were happening, defaults to future"] // #[description = "Filter sessions for when they are/were happening, defaults to future"]

View file

@ -5,6 +5,7 @@ pub mod invites;
mod links; mod links;
// pub mod planning; // pub mod planning;
pub mod coms; pub mod coms;
pub mod roles;
pub mod schedule; pub mod schedule;
pub mod utils; pub mod utils;
@ -27,7 +28,7 @@ pub async fn boop(ctx: Context<'_>) -> Result<(), Error> {
.await?; .await?;
let mut boop_count: i32 = 0; let mut boop_count: i32 = 0;
while let Some(mci) = serenity::CollectComponentInteraction::new(ctx.discord()) while let Some(mci) = serenity::CollectComponentInteraction::new(ctx)
.channel_id(ctx.channel_id()) .channel_id(ctx.channel_id())
// .timeout(std::time::Duration::from_secs(1200)) // .timeout(std::time::Duration::from_secs(1200))
.filter(move |mci| mci.data.custom_id == uuid_boop.to_string()) .filter(move |mci| mci.data.custom_id == uuid_boop.to_string())
@ -36,7 +37,7 @@ pub async fn boop(ctx: Context<'_>) -> Result<(), Error> {
boop_count += 1; boop_count += 1;
let mut msg = mci.message.clone(); let mut msg = mci.message.clone();
msg.edit(ctx.discord(), |m| { msg.edit(ctx, |m| {
m.content(match boop_count { m.content(match boop_count {
2 => "Boop count: <:HamSmile:738765923401596991>".to_string(), 2 => "Boop count: <:HamSmile:738765923401596991>".to_string(),
3 => "Boop 3".to_string(), 3 => "Boop 3".to_string(),
@ -60,7 +61,7 @@ pub async fn boop(ctx: Context<'_>) -> Result<(), Error> {
}) })
.await?; .await?;
mci.create_interaction_response(ctx.discord(), |ir| { mci.create_interaction_response(ctx, |ir| {
ir.kind(serenity::InteractionResponseType::DeferredUpdateMessage) ir.kind(serenity::InteractionResponseType::DeferredUpdateMessage)
}) })
.await?; .await?;
@ -69,6 +70,7 @@ pub async fn boop(ctx: Context<'_>) -> Result<(), Error> {
Ok(()) Ok(())
} }
// Imaginary fix button
#[poise::command(track_edits, slash_command)] #[poise::command(track_edits, slash_command)]
pub async fn fix(ctx: Context<'_>) -> Result<(), Error> { pub async fn fix(ctx: Context<'_>) -> Result<(), Error> {
let uuid_fix = ctx.id(); let uuid_fix = ctx.id();
@ -88,7 +90,7 @@ pub async fn fix(ctx: Context<'_>) -> Result<(), Error> {
.await?; .await?;
let mut fix_count: i32 = 0; let mut fix_count: i32 = 0;
while let Some(mci) = serenity::CollectComponentInteraction::new(ctx.discord()) while let Some(mci) = serenity::CollectComponentInteraction::new(ctx)
.channel_id(ctx.channel_id()) .channel_id(ctx.channel_id())
// .timeout(std::time::Duration::from_secs(1200)) // .timeout(std::time::Duration::from_secs(1200))
.filter(move |mci| mci.data.custom_id == uuid_fix.to_string()) .filter(move |mci| mci.data.custom_id == uuid_fix.to_string())
@ -97,12 +99,12 @@ pub async fn fix(ctx: Context<'_>) -> Result<(), Error> {
fix_count += 1; fix_count += 1;
let mut msg = mci.message.clone(); let mut msg = mci.message.clone();
msg.edit(ctx.discord(), |m| { msg.edit(ctx, |m| {
m.content(format!("Fixing failed try again. Attempt {}", fix_count)) m.content(format!("Fixing failed try again. Attempt {}", fix_count))
}) })
.await?; .await?;
mci.create_interaction_response(ctx.discord(), |ir| { mci.create_interaction_response(ctx, |ir| {
ir.kind(serenity::InteractionResponseType::DeferredUpdateMessage) ir.kind(serenity::InteractionResponseType::DeferredUpdateMessage)
}) })
.await?; .await?;

View file

@ -63,7 +63,7 @@ pub async fn series(
Ok(()) Ok(())
} }
#[derive(Debug, poise::SlashChoiceParameter)] #[derive(Debug, poise::ChoiceParameter)]
pub enum Timeframe { pub enum Timeframe {
#[name = "Currently happening"] #[name = "Currently happening"]
Current, Current,

93
src/commands/roles.rs Normal file
View file

@ -0,0 +1,93 @@
use crate::{Context, Error};
use poise::serenity_prelude::RoleId;
#[derive(Debug, poise::ChoiceParameter)]
pub enum Action {
#[name = "Add specified role."]
Add,
#[name = "Remove specified role."]
Remove,
#[name = "Toggle specified role (default)."]
Toggle,
}
async fn autocomplete_role<'a>(
ctx: Context<'_>,
partial: &'a str,
) -> impl Iterator<Item = String> + 'a {
let mut roles: Vec<String> = match super::super::SETTINGS
.read()
.unwrap()
.get_table("roles")
.unwrap()
.get(&ctx.guild_id().expect("Not in a guild").to_string())
{
None => {vec![]}
Some(val) => {
match val.clone()
.into_table()
{
Err(_) => {vec![]}
Ok(val) => {
val.into_keys()
.filter(|str| {str.contains(partial)})
.collect()
}
}
}
};
roles.sort_unstable();
roles.into_iter() //.map(|a| a.to_owned())
}
#[poise::command(slash_command, ephemeral, guild_only)]
pub async fn roles(
ctx: Context<'_>,
#[description = "Which role to add or remove?"]
#[autocomplete = "autocomplete_role"]
role: String,
#[description = "Remove or add role (default to add)"] action: Option<Action>,
) -> Result<(), Error> {
let role = super::super::SETTINGS
.read()
.unwrap()
.get_table("roles")
.unwrap()
.get(&ctx.guild_id().unwrap().to_string())
.expect("Command is only supported in a server")
.clone()
.into_table()
.expect("Config error, something in the configuration is wrong. Please contact someone to fix the bot.")
.get(&role)
.expect("Configured role does not exist")
.clone()
.into_uint()
.expect("Config error, specified role does not have the role_id configured.");
let role_ding = RoleId(role);
let mut member = ctx.author_member().await.expect("Where's my member....");
let mem = member.to_mut();
// if let Some(mut author) = ctx.author_member().await.as_mut().expect("Somehow there's no member object attached...") {
match action {
Some(Action::Remove) => {
mem.remove_role(ctx, role_ding).await?;
ctx.say(format!("Role {} Added", role)).await?
}
Some(Action::Add) => {
mem.add_role(ctx, role_ding).await?;
ctx.say(format!("Role {} Added", role)).await?
}
_ => {
if mem.roles.contains(&role_ding) {
mem.remove_role(ctx, role_ding).await?;
ctx.say(format!("Role {} Added", role)).await?
} else {
mem.add_role(ctx, role_ding).await?;
ctx.say(format!("Role {} Added", role)).await?
}
}
};
Ok(())
}

View file

@ -31,14 +31,14 @@ impl MSEvent {
fn get_value(&self, high_tier: bool) -> String { fn get_value(&self, high_tier: bool) -> String {
let link = if high_tier { let link = if high_tier {
format!( format!(
"[{id}](https://morningstreams.com/hightier/f1/session/{id})\n", "[{id}](https://morningstreams.com/hightier/f1/session/{id})",
id = self.id id = self.id
) )
} else { } else {
"".to_string() "".to_string()
}; };
format!( format!(
"{link}Start: <t:{start}:R>\nEnd: <t:{end}:R>", "{link}\nStart: <t:{start}:R>\nEnd: <t:{end}:R>",
link = link, link = link,
start = self.metadata.attributes.start.timestamp(), start = self.metadata.attributes.start.timestamp(),
end = self.metadata.attributes.end.timestamp() end = self.metadata.attributes.end.timestamp()
@ -136,7 +136,8 @@ async fn get_schedule() -> Option<MSReq> {
result result
} }
#[poise::command(slash_command)] // Get the most recent F1 schedule
#[poise::command(slash_command, ephemeral)]
pub async fn schedule(ctx: Context<'_>) -> Result<(), Error> { pub async fn schedule(ctx: Context<'_>) -> Result<(), Error> {
let events: Option<MSReq> = get_schedule().await; let events: Option<MSReq> = get_schedule().await;
let ht: bool = utils::high_tier(ctx).await; let ht: bool = utils::high_tier(ctx).await;

View file

@ -11,13 +11,13 @@ pub async fn high_tier(ctx: Context<'_>) -> bool {
_ => (), _ => (),
} }
match ctx.discord().cache.guild_channel(ctx.channel_id()) { match ctx.serenity_context().cache.guild_channel(ctx.channel_id()) {
None => return false, None => return false,
Some(chan) => match chan.parent_id { Some(chan) => match chan.parent_id {
None => return false, None => return false,
Some(cat_id) => match cat_id { Some(cat_id) => match cat_id {
ChannelId(547551264498515978) => return true, ChannelId(547551264498515978) => return true, // MS high tier
ChannelId(884698356360818708) => return true, ChannelId(884698356360818708) => return true, // Private server
_ => return false, _ => return false,
}, },
}, },
@ -92,7 +92,7 @@ pub async fn paginate_string(ctx: Context<'_>, pages: Vec<String>) -> Result<(),
// let interaction = interaction1.unwrap(); // let interaction = interaction1.unwrap();
let mut page = 0; let mut page = 0;
while let Some(mci) = serenity::CollectComponentInteraction::new(ctx.discord()) while let Some(mci) = serenity::CollectComponentInteraction::new(ctx)
// .author_id(ctx.author().id) // .author_id(ctx.author().id)
.channel_id(ctx.channel_id()) .channel_id(ctx.channel_id())
.timeout(std::time::Duration::from_secs(1200)) .timeout(std::time::Duration::from_secs(1200))
@ -116,7 +116,7 @@ pub async fn paginate_string(ctx: Context<'_>, pages: Vec<String>) -> Result<(),
} }
let mut msg = mci.message.clone(); let mut msg = mci.message.clone();
msg.edit(ctx.discord(), |m| { msg.edit(ctx, |m| {
m.content(format!( m.content(format!(
"{}\n\nPage: {}/{}", "{}\n\nPage: {}/{}",
pages.get(page).unwrap(), pages.get(page).unwrap(),
@ -126,7 +126,7 @@ pub async fn paginate_string(ctx: Context<'_>, pages: Vec<String>) -> Result<(),
}) })
.await?; .await?;
mci.create_interaction_response(ctx.discord(), |ir| { mci.create_interaction_response(ctx, |ir| {
ir.kind(serenity::InteractionResponseType::DeferredUpdateMessage) ir.kind(serenity::InteractionResponseType::DeferredUpdateMessage)
}) })
.await?; .await?;
@ -193,7 +193,7 @@ pub async fn paginate_string_embed(
// let interaction = interaction1.unwrap(); // let interaction = interaction1.unwrap();
let mut page = 0; let mut page = 0;
while let Some(mci) = serenity::CollectComponentInteraction::new(ctx.discord()) while let Some(mci) = serenity::CollectComponentInteraction::new(ctx)
// .author_id(ctx.author().id) // .author_id(ctx.author().id)
.channel_id(ctx.channel_id()) .channel_id(ctx.channel_id())
.timeout(std::time::Duration::from_secs(1200)) .timeout(std::time::Duration::from_secs(1200))
@ -217,7 +217,7 @@ pub async fn paginate_string_embed(
} }
let mut msg = mci.message.clone(); let mut msg = mci.message.clone();
msg.edit(ctx.discord(), |m| { msg.edit(ctx, |m| {
m.embed(|e| { m.embed(|e| {
e.title(format!("{} Page {}/{}", title, page + 1, page_count)) e.title(format!("{} Page {}/{}", title, page + 1, page_count))
.description(pages.get(page).unwrap()) .description(pages.get(page).unwrap())
@ -225,7 +225,7 @@ pub async fn paginate_string_embed(
}) })
.await?; .await?;
mci.create_interaction_response(ctx.discord(), |ir| { mci.create_interaction_response(ctx, |ir| {
ir.kind(serenity::InteractionResponseType::DeferredUpdateMessage) ir.kind(serenity::InteractionResponseType::DeferredUpdateMessage)
}) })
.await?; .await?;

View file

@ -74,7 +74,7 @@ async fn register(
"Purging global commands, must have been a mistake eh?" "Purging global commands, must have been a mistake eh?"
)) ))
.await?; .await?;
ctx.discord() ctx.serenity_context()
.http .http
.create_global_application_commands(&serenity::json::Value::Null) .create_global_application_commands(&serenity::json::Value::Null)
.await?; .await?;
@ -85,7 +85,7 @@ async fn register(
commands.len() commands.len()
)) ))
.await?; .await?;
ctx.discord() ctx.serenity_context()
.http .http
.create_global_application_commands(&commands_builder) .create_global_application_commands(&commands_builder)
.await?; .await?;
@ -111,7 +111,7 @@ async fn register(
commands.len() commands.len()
)) ))
.await?; .await?;
ctx.discord() ctx.serenity_context()
.http .http
.create_guild_application_commands(guild.id.0, &commands_builder) .create_guild_application_commands(guild.id.0, &commands_builder)
.await?; .await?;
@ -127,7 +127,7 @@ async fn on_error(error: poise::FrameworkError<'_, Data, Error>) {
// They are many errors that can occur, so we only handle the ones we want to customize // They are many errors that can occur, so we only handle the ones we want to customize
// and forward the rest to the default handler // and forward the rest to the default handler
match error { match error {
poise::FrameworkError::Setup { error } => panic!("Failed to start bot: {:?}", error), poise::FrameworkError::Setup { error, .. } => panic!("Failed to start bot: {:?}", error),
poise::FrameworkError::Command { error, ctx } => { poise::FrameworkError::Command { error, ctx } => {
println!("Error in command `{}`: {:?}", ctx.command().name, error,); println!("Error in command `{}`: {:?}", ctx.command().name, error,);
} }
@ -182,6 +182,7 @@ async fn app() -> Result<(), Error> {
register(), register(),
commands::invites::invites(), commands::invites::invites(),
commands::schedule::schedule(), commands::schedule::schedule(),
commands::roles::roles(),
commands::boop(), commands::boop(),
commands::fix(), commands::fix(),
// commands::planning::get_command(), // commands::planning::get_command(),
@ -245,7 +246,7 @@ async fn app() -> Result<(), Error> {
let framework = poise::Framework::builder() let framework = poise::Framework::builder()
.token(token) .token(token)
.user_data_setup(move |_ctx, _ready, _framework| { .setup(move |_ctx, _ready, _framework| {
// Box::pin(async move { Ok(Data { database: database }) }) // Box::pin(async move { Ok(Data { database: database }) })
Box::pin(async move { Ok(Data { database: db }) }) Box::pin(async move { Ok(Data { database: db }) })
}) })