look command pager
This commit is contained in:
		
							
								
								
									
										92
									
								
								Cargo.lock
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										92
									
								
								Cargo.lock
									
									
									
										generated
									
									
									
								
							@@ -171,12 +171,13 @@ checksum = "2554a3155fec064362507487171dcc4edc3df60cb10f3a1fb10ed8094822b120"
 | 
				
			|||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "chrono",
 | 
					 "chrono",
 | 
				
			||||||
 "parse-zoneinfo",
 | 
					 "parse-zoneinfo",
 | 
				
			||||||
 | 
					 "serde",
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "command_attr"
 | 
					name = "command_attr"
 | 
				
			||||||
version = "0.3.7"
 | 
					version = "0.3.7"
 | 
				
			||||||
source = "git+https://github.com/serenity-rs/serenity?branch=next#5348e9c56909d7c534717825be20763acb33336d"
 | 
					source = "git+https://github.com/serenity-rs/serenity?branch=next#723749c43182838925dd89ac90b93dd2a837261d"
 | 
				
			||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "proc-macro2",
 | 
					 "proc-macro2",
 | 
				
			||||||
 "quote",
 | 
					 "quote",
 | 
				
			||||||
@@ -318,9 +319,9 @@ dependencies = [
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "flate2"
 | 
					name = "flate2"
 | 
				
			||||||
version = "1.0.21"
 | 
					version = "1.0.22"
 | 
				
			||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
checksum = "80edafed416a46fb378521624fab1cfa2eb514784fd8921adbe8a8d8321da811"
 | 
					checksum = "1e6988e897c1c9c485f43b47a529cef42fde0547f9d8d41a7062518f1d8fc53f"
 | 
				
			||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "cfg-if",
 | 
					 "cfg-if",
 | 
				
			||||||
 "crc32fast",
 | 
					 "crc32fast",
 | 
				
			||||||
@@ -694,6 +695,15 @@ version = "2.3.1"
 | 
				
			|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
checksum = "68f2d64f2edebec4ce84ad108148e67e1064789bee435edc5b60ad398714a3a9"
 | 
					checksum = "68f2d64f2edebec4ce84ad108148e67e1064789bee435edc5b60ad398714a3a9"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[[package]]
 | 
				
			||||||
 | 
					name = "itertools"
 | 
				
			||||||
 | 
					version = "0.10.1"
 | 
				
			||||||
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
 | 
					checksum = "69ddb889f9d0d08a67338271fa9b62996bc788c7796a5c18cf057420aaed5eaf"
 | 
				
			||||||
 | 
					dependencies = [
 | 
				
			||||||
 | 
					 "either",
 | 
				
			||||||
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "itoa"
 | 
					name = "itoa"
 | 
				
			||||||
version = "0.4.8"
 | 
					version = "0.4.8"
 | 
				
			||||||
@@ -702,9 +712,9 @@ checksum = "b71991ff56294aa922b450139ee08b3bfc70982c6b2c7562771375cf73542dd4"
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "js-sys"
 | 
					name = "js-sys"
 | 
				
			||||||
version = "0.3.54"
 | 
					version = "0.3.55"
 | 
				
			||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
checksum = "1866b355d9c878e5e607473cbe3f63282c0b7aad2db1dbebf55076c686918254"
 | 
					checksum = "7cc9ffccd38c451a86bf13657df244e9c3f37493cce8e5e21e940963777acc84"
 | 
				
			||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "wasm-bindgen",
 | 
					 "wasm-bindgen",
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
@@ -726,9 +736,9 @@ checksum = "db13adb97ab515a3691f56e4dbab09283d0b86cb45abd991d8634a9d6f501760"
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "libc"
 | 
					name = "libc"
 | 
				
			||||||
version = "0.2.101"
 | 
					version = "0.2.102"
 | 
				
			||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
checksum = "3cb00336871be5ed2c8ed44b60ae9959dc5b9f08539422ed43f09e34ecaeba21"
 | 
					checksum = "a2a5ac8f984bfcf3a823267e5fde638acc3325f6496633a5da6bb6eb2171e103"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "libm"
 | 
					name = "libm"
 | 
				
			||||||
@@ -754,12 +764,6 @@ dependencies = [
 | 
				
			|||||||
 "cfg-if",
 | 
					 "cfg-if",
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					 | 
				
			||||||
name = "maplit"
 | 
					 | 
				
			||||||
version = "1.0.2"
 | 
					 | 
				
			||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					 | 
				
			||||||
checksum = "3e2e65a1a2e43cfcb47a895c4c8b10d1f4a61097f9f254f183aee60cad9c651d"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "matches"
 | 
					name = "matches"
 | 
				
			||||||
version = "0.1.9"
 | 
					version = "0.1.9"
 | 
				
			||||||
@@ -1433,9 +1437,9 @@ dependencies = [
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "serde_json"
 | 
					name = "serde_json"
 | 
				
			||||||
version = "1.0.67"
 | 
					version = "1.0.68"
 | 
				
			||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
checksum = "a7f9e390c27c3c0ce8bc5d725f6e4d30a29d26659494aa4b17535f7522c5c950"
 | 
					checksum = "0f690853975602e1bfe1ccbf50504d67174e3bcf340f23b5ea9992e0587a52d8"
 | 
				
			||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "itoa",
 | 
					 "itoa",
 | 
				
			||||||
 "ryu",
 | 
					 "ryu",
 | 
				
			||||||
@@ -1457,7 +1461,7 @@ dependencies = [
 | 
				
			|||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "serenity"
 | 
					name = "serenity"
 | 
				
			||||||
version = "0.10.9"
 | 
					version = "0.10.9"
 | 
				
			||||||
source = "git+https://github.com/serenity-rs/serenity?branch=next#5348e9c56909d7c534717825be20763acb33336d"
 | 
					source = "git+https://github.com/serenity-rs/serenity?branch=next#723749c43182838925dd89ac90b93dd2a837261d"
 | 
				
			||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "async-trait",
 | 
					 "async-trait",
 | 
				
			||||||
 "async-tungstenite",
 | 
					 "async-tungstenite",
 | 
				
			||||||
@@ -1545,9 +1549,9 @@ checksum = "fe0f37c9e8f3c5a4a66ad655a93c74daac4ad00c441533bf5c6e7990bb42604e"
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "socket2"
 | 
					name = "socket2"
 | 
				
			||||||
version = "0.4.1"
 | 
					version = "0.4.2"
 | 
				
			||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
checksum = "765f090f0e423d2b55843402a07915add955e7d60657db13707a159727326cad"
 | 
					checksum = "5dc90fe6c7be1a323296982db1836d1ea9e47b6839496dde9a541bc496df3516"
 | 
				
			||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "libc",
 | 
					 "libc",
 | 
				
			||||||
 "winapi",
 | 
					 "winapi",
 | 
				
			||||||
@@ -1561,14 +1565,12 @@ checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d"
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "sqlformat"
 | 
					name = "sqlformat"
 | 
				
			||||||
version = "0.1.7"
 | 
					version = "0.1.8"
 | 
				
			||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
checksum = "684001e7985ec1a9a66963b77ed151ef22a7876b3fdd7e37a57ec774f54b7d96"
 | 
					checksum = "b4b7922be017ee70900be125523f38bdd644f4f06a1b16e8fa5a8ee8c34bffd4"
 | 
				
			||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "lazy_static",
 | 
					 "itertools",
 | 
				
			||||||
 "maplit",
 | 
					 | 
				
			||||||
 "nom",
 | 
					 "nom",
 | 
				
			||||||
 "regex",
 | 
					 | 
				
			||||||
 "unicode_categories",
 | 
					 "unicode_categories",
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -1765,9 +1767,9 @@ dependencies = [
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "tinyvec"
 | 
					name = "tinyvec"
 | 
				
			||||||
version = "1.3.1"
 | 
					version = "1.4.0"
 | 
				
			||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
checksum = "848a1e1181b9f6753b5e96a092749e29b11d19ede67dfbbd6c7dc7e0f49b5338"
 | 
					checksum = "5241dd6f21443a3606b432718b166d3cedc962fd4b8bea54a8bc7f514ebda986"
 | 
				
			||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "tinyvec_macros",
 | 
					 "tinyvec_macros",
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
@@ -1863,9 +1865,9 @@ checksum = "360dfd1d6d30e05fda32ace2c8c70e9c0a9da713275777f5a4dbb8a1893930c6"
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "tracing"
 | 
					name = "tracing"
 | 
				
			||||||
version = "0.1.26"
 | 
					version = "0.1.27"
 | 
				
			||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
checksum = "09adeb8c97449311ccd28a427f96fb563e7fd31aabf994189879d9da2394b89d"
 | 
					checksum = "c2ba9ab62b7d6497a8638dfda5e5c4fb3b2d5a7fca4118f2b96151c8ef1a437e"
 | 
				
			||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "cfg-if",
 | 
					 "cfg-if",
 | 
				
			||||||
 "log",
 | 
					 "log",
 | 
				
			||||||
@@ -1876,9 +1878,9 @@ dependencies = [
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "tracing-attributes"
 | 
					name = "tracing-attributes"
 | 
				
			||||||
version = "0.1.15"
 | 
					version = "0.1.16"
 | 
				
			||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
checksum = "c42e6fa53307c8a17e4ccd4dc81cf5ec38db9209f59b222210375b54ee40d1e2"
 | 
					checksum = "98863d0dd09fa59a1b79c6750ad80dbda6b75f4e71c437a6a1a8cb91a8bcbd77"
 | 
				
			||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "proc-macro2",
 | 
					 "proc-macro2",
 | 
				
			||||||
 "quote",
 | 
					 "quote",
 | 
				
			||||||
@@ -1887,9 +1889,9 @@ dependencies = [
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "tracing-core"
 | 
					name = "tracing-core"
 | 
				
			||||||
version = "0.1.19"
 | 
					version = "0.1.20"
 | 
				
			||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
checksum = "2ca517f43f0fb96e0c3072ed5c275fe5eece87e8cb52f4a77b69226d3b1c9df8"
 | 
					checksum = "46125608c26121c81b0c6d693eab5a420e416da7e43c426d2e8f7df8da8a3acf"
 | 
				
			||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "lazy_static",
 | 
					 "lazy_static",
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
@@ -2044,9 +2046,9 @@ checksum = "fd6fbd9a79829dd1ad0cc20627bf1ed606756a7f77edff7b66b7064f9cb327c6"
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "wasm-bindgen"
 | 
					name = "wasm-bindgen"
 | 
				
			||||||
version = "0.2.77"
 | 
					version = "0.2.78"
 | 
				
			||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
checksum = "5e68338db6becec24d3c7977b5bf8a48be992c934b5d07177e3931f5dc9b076c"
 | 
					checksum = "632f73e236b219150ea279196e54e610f5dbafa5d61786303d4da54f84e47fce"
 | 
				
			||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "cfg-if",
 | 
					 "cfg-if",
 | 
				
			||||||
 "serde",
 | 
					 "serde",
 | 
				
			||||||
@@ -2056,9 +2058,9 @@ dependencies = [
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "wasm-bindgen-backend"
 | 
					name = "wasm-bindgen-backend"
 | 
				
			||||||
version = "0.2.77"
 | 
					version = "0.2.78"
 | 
				
			||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
checksum = "f34c405b4f0658583dba0c1c7c9b694f3cac32655db463b56c254a1c75269523"
 | 
					checksum = "a317bf8f9fba2476b4b2c85ef4c4af8ff39c3c7f0cdfeed4f82c34a880aa837b"
 | 
				
			||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "bumpalo",
 | 
					 "bumpalo",
 | 
				
			||||||
 "lazy_static",
 | 
					 "lazy_static",
 | 
				
			||||||
@@ -2071,9 +2073,9 @@ dependencies = [
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "wasm-bindgen-futures"
 | 
					name = "wasm-bindgen-futures"
 | 
				
			||||||
version = "0.4.27"
 | 
					version = "0.4.28"
 | 
				
			||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
checksum = "a87d738d4abc4cf22f6eb142f5b9a81301331ee3c767f2fef2fda4e325492060"
 | 
					checksum = "8e8d7523cb1f2a4c96c1317ca690031b714a51cc14e05f712446691f413f5d39"
 | 
				
			||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "cfg-if",
 | 
					 "cfg-if",
 | 
				
			||||||
 "js-sys",
 | 
					 "js-sys",
 | 
				
			||||||
@@ -2083,9 +2085,9 @@ dependencies = [
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "wasm-bindgen-macro"
 | 
					name = "wasm-bindgen-macro"
 | 
				
			||||||
version = "0.2.77"
 | 
					version = "0.2.78"
 | 
				
			||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
checksum = "b9d5a6580be83b19dc570a8f9c324251687ab2184e57086f71625feb57ec77c8"
 | 
					checksum = "d56146e7c495528bf6587663bea13a8eb588d39b36b679d83972e1a2dbbdacf9"
 | 
				
			||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "quote",
 | 
					 "quote",
 | 
				
			||||||
 "wasm-bindgen-macro-support",
 | 
					 "wasm-bindgen-macro-support",
 | 
				
			||||||
@@ -2093,9 +2095,9 @@ dependencies = [
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "wasm-bindgen-macro-support"
 | 
					name = "wasm-bindgen-macro-support"
 | 
				
			||||||
version = "0.2.77"
 | 
					version = "0.2.78"
 | 
				
			||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
checksum = "e3775a030dc6f5a0afd8a84981a21cc92a781eb429acef9ecce476d0c9113e92"
 | 
					checksum = "7803e0eea25835f8abdc585cd3021b3deb11543c6fe226dcd30b228857c5c5ab"
 | 
				
			||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "proc-macro2",
 | 
					 "proc-macro2",
 | 
				
			||||||
 "quote",
 | 
					 "quote",
 | 
				
			||||||
@@ -2106,15 +2108,15 @@ dependencies = [
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "wasm-bindgen-shared"
 | 
					name = "wasm-bindgen-shared"
 | 
				
			||||||
version = "0.2.77"
 | 
					version = "0.2.78"
 | 
				
			||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
checksum = "c279e376c7a8e8752a8f1eaa35b7b0bee6bb9fb0cdacfa97cc3f1f289c87e2b4"
 | 
					checksum = "0237232789cf037d5480773fe568aac745bfe2afbc11a863e97901780a6b47cc"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "web-sys"
 | 
					name = "web-sys"
 | 
				
			||||||
version = "0.3.54"
 | 
					version = "0.3.55"
 | 
				
			||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
checksum = "0a84d70d1ec7d2da2d26a5bd78f4bca1b8c3254805363ce743b7a05bc30d195a"
 | 
					checksum = "38eb105f1c59d9eaa6b5cdc92b859d85b926e82cb2e0945cd0c9259faa6fe9fb"
 | 
				
			||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "js-sys",
 | 
					 "js-sys",
 | 
				
			||||||
 "wasm-bindgen",
 | 
					 "wasm-bindgen",
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -14,7 +14,7 @@ regex = "1.4"
 | 
				
			|||||||
log = "0.4"
 | 
					log = "0.4"
 | 
				
			||||||
env_logger = "0.8"
 | 
					env_logger = "0.8"
 | 
				
			||||||
chrono = "0.4"
 | 
					chrono = "0.4"
 | 
				
			||||||
chrono-tz = "0.5"
 | 
					chrono-tz = { version = "0.5", features = ["serde"] }
 | 
				
			||||||
lazy_static = "1.4"
 | 
					lazy_static = "1.4"
 | 
				
			||||||
num-integer = "0.1"
 | 
					num-integer = "0.1"
 | 
				
			||||||
serde = "1.0"
 | 
					serde = "1.0"
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -14,12 +14,14 @@ use serenity::{
 | 
				
			|||||||
    model::{
 | 
					    model::{
 | 
				
			||||||
        channel::{Channel, Message},
 | 
					        channel::{Channel, Message},
 | 
				
			||||||
        id::ChannelId,
 | 
					        id::ChannelId,
 | 
				
			||||||
 | 
					        interactions::message_component::ButtonStyle,
 | 
				
			||||||
        misc::Mentionable,
 | 
					        misc::Mentionable,
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use crate::{
 | 
					use crate::{
 | 
				
			||||||
    check_subscription_on_message,
 | 
					    check_subscription_on_message,
 | 
				
			||||||
 | 
					    component_models::{ComponentDataModel, LookPager, PageAction},
 | 
				
			||||||
    consts::{
 | 
					    consts::{
 | 
				
			||||||
        EMBED_DESCRIPTION_MAX_LENGTH, REGEX_CHANNEL_USER, REGEX_NATURAL_COMMAND_1,
 | 
					        EMBED_DESCRIPTION_MAX_LENGTH, REGEX_CHANNEL_USER, REGEX_NATURAL_COMMAND_1,
 | 
				
			||||||
        REGEX_NATURAL_COMMAND_2, REGEX_REMIND_COMMAND, THEME_COLOR,
 | 
					        REGEX_NATURAL_COMMAND_2, REGEX_REMIND_COMMAND, THEME_COLOR,
 | 
				
			||||||
@@ -296,6 +298,12 @@ async fn look(ctx: &Context, invoke: &(dyn CommandInvoke + Send + Sync), args: C
 | 
				
			|||||||
        invoke.channel_id()
 | 
					        invoke.channel_id()
 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    let channel_name = if let Some(Channel::Guild(channel)) = channel_id.to_channel_cached(&ctx) {
 | 
				
			||||||
 | 
					        Some(channel.name)
 | 
				
			||||||
 | 
					    } else {
 | 
				
			||||||
 | 
					        None
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    let reminders = Reminder::from_channel(ctx, channel_id, &flags).await;
 | 
					    let reminders = Reminder::from_channel(ctx, channel_id, &flags).await;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if reminders.is_empty() {
 | 
					    if reminders.is_empty() {
 | 
				
			||||||
@@ -325,35 +333,84 @@ async fn look(ctx: &Context, invoke: &(dyn CommandInvoke + Send + Sync), args: C
 | 
				
			|||||||
            .fold(0, |t, r| t + r.len())
 | 
					            .fold(0, |t, r| t + r.len())
 | 
				
			||||||
            .div_ceil(EMBED_DESCRIPTION_MAX_LENGTH);
 | 
					            .div_ceil(EMBED_DESCRIPTION_MAX_LENGTH);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        let _ = invoke
 | 
					        let page_first = ComponentDataModel::LookPager(LookPager {
 | 
				
			||||||
 | 
					            flags: flags.clone(),
 | 
				
			||||||
 | 
					            page: 0,
 | 
				
			||||||
 | 
					            action: PageAction::First,
 | 
				
			||||||
 | 
					            timezone,
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					        let page_prev = ComponentDataModel::LookPager(LookPager {
 | 
				
			||||||
 | 
					            flags: flags.clone(),
 | 
				
			||||||
 | 
					            page: 0,
 | 
				
			||||||
 | 
					            action: PageAction::Previous,
 | 
				
			||||||
 | 
					            timezone,
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					        let page_next = ComponentDataModel::LookPager(LookPager {
 | 
				
			||||||
 | 
					            flags: flags.clone(),
 | 
				
			||||||
 | 
					            page: 0,
 | 
				
			||||||
 | 
					            action: PageAction::Next,
 | 
				
			||||||
 | 
					            timezone,
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					        let page_last = ComponentDataModel::LookPager(LookPager {
 | 
				
			||||||
 | 
					            flags: flags.clone(),
 | 
				
			||||||
 | 
					            page: 0,
 | 
				
			||||||
 | 
					            action: PageAction::Last,
 | 
				
			||||||
 | 
					            timezone,
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        invoke
 | 
				
			||||||
            .respond(
 | 
					            .respond(
 | 
				
			||||||
                ctx.http.clone(),
 | 
					                ctx.http.clone(),
 | 
				
			||||||
                CreateGenericResponse::new()
 | 
					                CreateGenericResponse::new()
 | 
				
			||||||
                    .embed(|e| {
 | 
					                    .embed(|e| {
 | 
				
			||||||
                        e.title(format!("Reminders on {}", channel_id.mention()))
 | 
					                        e.title(format!(
 | 
				
			||||||
                            .description(display)
 | 
					                            "Reminders{}",
 | 
				
			||||||
                            .footer(|f| f.text(format!("Page {} of {}", 1, pages)))
 | 
					                            channel_name.map_or(String::new(), |n| format!(" on #{}", n))
 | 
				
			||||||
 | 
					                        ))
 | 
				
			||||||
 | 
					                        .description(display)
 | 
				
			||||||
 | 
					                        .footer(|f| f.text(format!("Page {} of {}", 1, pages)))
 | 
				
			||||||
 | 
					                        .color(*THEME_COLOR)
 | 
				
			||||||
                    })
 | 
					                    })
 | 
				
			||||||
                    .components(|comp| {
 | 
					                    .components(|comp| {
 | 
				
			||||||
                        comp.create_action_row(|row| {
 | 
					                        comp.create_action_row(|row| {
 | 
				
			||||||
                            row.create_button(|b| b.label("⏮️").custom_id(".1"))
 | 
					                            row.create_button(|b| {
 | 
				
			||||||
                                .create_button(|b| b.label("◀️").custom_id(".2"))
 | 
					                                b.label("⏮️")
 | 
				
			||||||
                                .create_button(|b| b.label("▶️").custom_id(".3"))
 | 
					                                    .style(ButtonStyle::Primary)
 | 
				
			||||||
                                .create_button(|b| b.label("⏭️").custom_id(".4"))
 | 
					                                    .custom_id(page_first.to_custom_id())
 | 
				
			||||||
 | 
					                                    .disabled(true)
 | 
				
			||||||
 | 
					                            })
 | 
				
			||||||
 | 
					                            .create_button(|b| {
 | 
				
			||||||
 | 
					                                b.label("◀️")
 | 
				
			||||||
 | 
					                                    .style(ButtonStyle::Secondary)
 | 
				
			||||||
 | 
					                                    .custom_id(page_prev.to_custom_id())
 | 
				
			||||||
 | 
					                                    .disabled(true)
 | 
				
			||||||
 | 
					                            })
 | 
				
			||||||
 | 
					                            .create_button(|b| {
 | 
				
			||||||
 | 
					                                b.label("▶️")
 | 
				
			||||||
 | 
					                                    .style(ButtonStyle::Secondary)
 | 
				
			||||||
 | 
					                                    .custom_id(page_next.to_custom_id())
 | 
				
			||||||
 | 
					                                    .disabled(pages == 1)
 | 
				
			||||||
 | 
					                            })
 | 
				
			||||||
 | 
					                            .create_button(|b| {
 | 
				
			||||||
 | 
					                                b.label("⏭️")
 | 
				
			||||||
 | 
					                                    .style(ButtonStyle::Primary)
 | 
				
			||||||
 | 
					                                    .custom_id(page_last.to_custom_id())
 | 
				
			||||||
 | 
					                                    .disabled(pages == 1)
 | 
				
			||||||
 | 
					                            })
 | 
				
			||||||
                        })
 | 
					                        })
 | 
				
			||||||
                    }),
 | 
					                    }),
 | 
				
			||||||
            )
 | 
					            )
 | 
				
			||||||
            .await;
 | 
					            .await
 | 
				
			||||||
 | 
					            .unwrap();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
#[command("del")]
 | 
					#[command("del")]
 | 
				
			||||||
 | 
					#[description("Delete reminders")]
 | 
				
			||||||
#[permission_level(Managed)]
 | 
					#[permission_level(Managed)]
 | 
				
			||||||
async fn delete(ctx: &Context, msg: &Message, _args: String) {
 | 
					async fn delete(ctx: &Context, invoke: &(dyn CommandInvoke + Send + Sync)) {
 | 
				
			||||||
    let (pool, lm) = get_ctx_data(&ctx).await;
 | 
					    let pool = ctx.data.read().await.get::<SQLPool>().cloned().unwrap();
 | 
				
			||||||
 | 
					 | 
				
			||||||
    let user_data = UserData::from_user(&msg.author, &ctx, &pool).await.unwrap();
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    let _ = msg.channel_id.say(&ctx, lm.get(&user_data.language, "del/listing")).await;
 | 
					    let _ = msg.channel_id.say(&ctx, lm.get(&user_data.language, "del/listing")).await;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -417,19 +474,6 @@ DELETE FROM reminders WHERE FIND_IN_SET(id, ?)
 | 
				
			|||||||
            .await
 | 
					            .await
 | 
				
			||||||
            .unwrap();
 | 
					            .unwrap();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            if let Some(guild_id) = msg.guild_id {
 | 
					 | 
				
			||||||
                let _ = sqlx::query!(
 | 
					 | 
				
			||||||
                    "
 | 
					 | 
				
			||||||
INSERT INTO events (event_name, bulk_count, guild_id, user_id) VALUES ('delete', ?, ?, ?)
 | 
					 | 
				
			||||||
                    ",
 | 
					 | 
				
			||||||
                    count_row.count,
 | 
					 | 
				
			||||||
                    guild_id.as_u64(),
 | 
					 | 
				
			||||||
                    user_data.id
 | 
					 | 
				
			||||||
                )
 | 
					 | 
				
			||||||
                .execute(&pool)
 | 
					 | 
				
			||||||
                .await;
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            let content = lm.get(&user_data.language, "del/count").replacen(
 | 
					            let content = lm.get(&user_data.language, "del/count").replacen(
 | 
				
			||||||
                "{}",
 | 
					                "{}",
 | 
				
			||||||
                &count_row.count.to_string(),
 | 
					                &count_row.count.to_string(),
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,13 +1,28 @@
 | 
				
			|||||||
use std::io::Cursor;
 | 
					use std::io::Cursor;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					use chrono_tz::Tz;
 | 
				
			||||||
use rmp_serde::Serializer;
 | 
					use rmp_serde::Serializer;
 | 
				
			||||||
use serde::{Deserialize, Serialize};
 | 
					use serde::{Deserialize, Serialize};
 | 
				
			||||||
use serenity::model::{
 | 
					use serenity::{
 | 
				
			||||||
    id::{ChannelId, RoleId},
 | 
					    builder::CreateEmbed,
 | 
				
			||||||
    interactions::message_component::MessageComponentInteraction,
 | 
					    client::Context,
 | 
				
			||||||
 | 
					    model::{
 | 
				
			||||||
 | 
					        channel::Channel,
 | 
				
			||||||
 | 
					        id::{ChannelId, RoleId},
 | 
				
			||||||
 | 
					        interactions::{
 | 
				
			||||||
 | 
					            message_component::{ButtonStyle, MessageComponentInteraction},
 | 
				
			||||||
 | 
					            InteractionResponseType,
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use crate::models::reminder::look_flags::LookFlags;
 | 
					use crate::{
 | 
				
			||||||
 | 
					    consts::{EMBED_DESCRIPTION_MAX_LENGTH, THEME_COLOR},
 | 
				
			||||||
 | 
					    models::{
 | 
				
			||||||
 | 
					        reminder::{look_flags::LookFlags, Reminder},
 | 
				
			||||||
 | 
					        user_data::UserData,
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#[derive(Deserialize, Serialize)]
 | 
					#[derive(Deserialize, Serialize)]
 | 
				
			||||||
#[serde(tag = "type")]
 | 
					#[serde(tag = "type")]
 | 
				
			||||||
@@ -29,23 +44,160 @@ impl ComponentDataModel {
 | 
				
			|||||||
        rmp_serde::from_read(cur).unwrap()
 | 
					        rmp_serde::from_read(cur).unwrap()
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    pub async fn act(&self, component: MessageComponentInteraction) {
 | 
					    pub async fn act(&self, ctx: &Context, component: MessageComponentInteraction) {
 | 
				
			||||||
        match self {
 | 
					        match self {
 | 
				
			||||||
            ComponentDataModel::Restrict(restrict) => {
 | 
					            ComponentDataModel::Restrict(restrict) => {
 | 
				
			||||||
                println!("{:?}", component.data.values);
 | 
					                println!("{:?}", component.data.values);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            ComponentDataModel::LookPager(pager) => {}
 | 
					            ComponentDataModel::LookPager(pager) => {
 | 
				
			||||||
 | 
					                let flags = pager.flags;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                let channel_opt = component.channel_id.to_channel_cached(&ctx);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                let channel_id = if let Some(Channel::Guild(channel)) = channel_opt {
 | 
				
			||||||
 | 
					                    if Some(channel.guild_id) == component.guild_id {
 | 
				
			||||||
 | 
					                        flags.channel_id.unwrap_or(component.channel_id)
 | 
				
			||||||
 | 
					                    } else {
 | 
				
			||||||
 | 
					                        component.channel_id
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                } else {
 | 
				
			||||||
 | 
					                    component.channel_id
 | 
				
			||||||
 | 
					                };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                let reminders = Reminder::from_channel(ctx, channel_id, &flags).await;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                let pages = reminders
 | 
				
			||||||
 | 
					                    .iter()
 | 
				
			||||||
 | 
					                    .map(|reminder| reminder.display(&flags, &pager.timezone))
 | 
				
			||||||
 | 
					                    .fold(0, |t, r| t + r.len())
 | 
				
			||||||
 | 
					                    .div_ceil(EMBED_DESCRIPTION_MAX_LENGTH) as u16;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                let channel_name =
 | 
				
			||||||
 | 
					                    if let Some(Channel::Guild(channel)) = channel_id.to_channel_cached(&ctx) {
 | 
				
			||||||
 | 
					                        Some(channel.name)
 | 
				
			||||||
 | 
					                    } else {
 | 
				
			||||||
 | 
					                        None
 | 
				
			||||||
 | 
					                    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                let next_page = match pager.action {
 | 
				
			||||||
 | 
					                    PageAction::First => 0,
 | 
				
			||||||
 | 
					                    PageAction::Previous => 0.max(pager.page - 1),
 | 
				
			||||||
 | 
					                    PageAction::Next => (pages - 1).min(pager.page + 1),
 | 
				
			||||||
 | 
					                    PageAction::Last => pages - 1,
 | 
				
			||||||
 | 
					                };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                let mut char_count = 0;
 | 
				
			||||||
 | 
					                let mut skip_char_count = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                let display = reminders
 | 
				
			||||||
 | 
					                    .iter()
 | 
				
			||||||
 | 
					                    .map(|reminder| reminder.display(&flags, &pager.timezone))
 | 
				
			||||||
 | 
					                    .skip_while(|p| {
 | 
				
			||||||
 | 
					                        skip_char_count += p.len();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                        skip_char_count < EMBED_DESCRIPTION_MAX_LENGTH * next_page as usize
 | 
				
			||||||
 | 
					                    })
 | 
				
			||||||
 | 
					                    .take_while(|p| {
 | 
				
			||||||
 | 
					                        char_count += p.len();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                        char_count < EMBED_DESCRIPTION_MAX_LENGTH
 | 
				
			||||||
 | 
					                    })
 | 
				
			||||||
 | 
					                    .collect::<Vec<String>>()
 | 
				
			||||||
 | 
					                    .join("\n");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                let page_first = ComponentDataModel::LookPager(LookPager {
 | 
				
			||||||
 | 
					                    flags: flags.clone(),
 | 
				
			||||||
 | 
					                    page: next_page,
 | 
				
			||||||
 | 
					                    action: PageAction::First,
 | 
				
			||||||
 | 
					                    timezone: pager.timezone,
 | 
				
			||||||
 | 
					                });
 | 
				
			||||||
 | 
					                let page_prev = ComponentDataModel::LookPager(LookPager {
 | 
				
			||||||
 | 
					                    flags: flags.clone(),
 | 
				
			||||||
 | 
					                    page: next_page,
 | 
				
			||||||
 | 
					                    action: PageAction::Previous,
 | 
				
			||||||
 | 
					                    timezone: pager.timezone,
 | 
				
			||||||
 | 
					                });
 | 
				
			||||||
 | 
					                let page_next = ComponentDataModel::LookPager(LookPager {
 | 
				
			||||||
 | 
					                    flags: flags.clone(),
 | 
				
			||||||
 | 
					                    page: next_page,
 | 
				
			||||||
 | 
					                    action: PageAction::Next,
 | 
				
			||||||
 | 
					                    timezone: pager.timezone,
 | 
				
			||||||
 | 
					                });
 | 
				
			||||||
 | 
					                let page_last = ComponentDataModel::LookPager(LookPager {
 | 
				
			||||||
 | 
					                    flags: flags.clone(),
 | 
				
			||||||
 | 
					                    page: next_page,
 | 
				
			||||||
 | 
					                    action: PageAction::Last,
 | 
				
			||||||
 | 
					                    timezone: pager.timezone,
 | 
				
			||||||
 | 
					                });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                let mut embed = CreateEmbed::default();
 | 
				
			||||||
 | 
					                embed
 | 
				
			||||||
 | 
					                    .title(format!(
 | 
				
			||||||
 | 
					                        "Reminders{}",
 | 
				
			||||||
 | 
					                        channel_name.map_or(String::new(), |n| format!(" on #{}", n))
 | 
				
			||||||
 | 
					                    ))
 | 
				
			||||||
 | 
					                    .description(display)
 | 
				
			||||||
 | 
					                    .footer(|f| f.text(format!("Page {} of {}", next_page + 1, pages)))
 | 
				
			||||||
 | 
					                    .color(*THEME_COLOR);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                let _ =
 | 
				
			||||||
 | 
					                    component
 | 
				
			||||||
 | 
					                        .create_interaction_response(&ctx, |r| {
 | 
				
			||||||
 | 
					                            r.kind(InteractionResponseType::UpdateMessage)
 | 
				
			||||||
 | 
					                                .interaction_response_data(|response| {
 | 
				
			||||||
 | 
					                                    response.embeds(vec![embed]).components(|comp| {
 | 
				
			||||||
 | 
					                                        comp.create_action_row(|row| {
 | 
				
			||||||
 | 
					                                            row.create_button(|b| {
 | 
				
			||||||
 | 
					                                                b.label("⏮️")
 | 
				
			||||||
 | 
					                                                    .style(ButtonStyle::Primary)
 | 
				
			||||||
 | 
					                                                    .custom_id(page_first.to_custom_id())
 | 
				
			||||||
 | 
					                                                    .disabled(next_page == 0)
 | 
				
			||||||
 | 
					                                            })
 | 
				
			||||||
 | 
					                                            .create_button(|b| {
 | 
				
			||||||
 | 
					                                                b.label("◀️")
 | 
				
			||||||
 | 
					                                                    .style(ButtonStyle::Secondary)
 | 
				
			||||||
 | 
					                                                    .custom_id(page_prev.to_custom_id())
 | 
				
			||||||
 | 
					                                                    .disabled(next_page == 0)
 | 
				
			||||||
 | 
					                                            })
 | 
				
			||||||
 | 
					                                            .create_button(|b| {
 | 
				
			||||||
 | 
					                                                b.label("▶️")
 | 
				
			||||||
 | 
					                                                    .style(ButtonStyle::Secondary)
 | 
				
			||||||
 | 
					                                                    .custom_id(page_next.to_custom_id())
 | 
				
			||||||
 | 
					                                                    .disabled(next_page + 1 == pages)
 | 
				
			||||||
 | 
					                                            })
 | 
				
			||||||
 | 
					                                            .create_button(|b| {
 | 
				
			||||||
 | 
					                                                b.label("⏭️")
 | 
				
			||||||
 | 
					                                                    .style(ButtonStyle::Primary)
 | 
				
			||||||
 | 
					                                                    .custom_id(page_last.to_custom_id())
 | 
				
			||||||
 | 
					                                                    .disabled(next_page + 1 == pages)
 | 
				
			||||||
 | 
					                                            })
 | 
				
			||||||
 | 
					                                        })
 | 
				
			||||||
 | 
					                                    })
 | 
				
			||||||
 | 
					                                })
 | 
				
			||||||
 | 
					                        })
 | 
				
			||||||
 | 
					                        .await;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#[derive(Deserialize, Serialize)]
 | 
					#[derive(Serialize, Deserialize)]
 | 
				
			||||||
pub struct Restrict {
 | 
					pub struct Restrict {
 | 
				
			||||||
    pub role_id: RoleId,
 | 
					    pub role_id: RoleId,
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#[derive(Deserialize, Serialize)]
 | 
					#[derive(Serialize, Deserialize, Debug)]
 | 
				
			||||||
 | 
					pub enum PageAction {
 | 
				
			||||||
 | 
					    First = 0,
 | 
				
			||||||
 | 
					    Previous = 1,
 | 
				
			||||||
 | 
					    Next = 2,
 | 
				
			||||||
 | 
					    Last = 3,
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#[derive(Serialize, Deserialize, Debug)]
 | 
				
			||||||
pub struct LookPager {
 | 
					pub struct LookPager {
 | 
				
			||||||
    pub flags: LookFlags,
 | 
					    pub flags: LookFlags,
 | 
				
			||||||
    pub page_request: u16,
 | 
					    pub page: u16,
 | 
				
			||||||
 | 
					    pub action: PageAction,
 | 
				
			||||||
 | 
					    pub timezone: Tz,
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,3 +1,5 @@
 | 
				
			|||||||
 | 
					// todo move framework to its own module, split out permission checks
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use std::{
 | 
					use std::{
 | 
				
			||||||
    collections::{HashMap, HashSet},
 | 
					    collections::{HashMap, HashSet},
 | 
				
			||||||
    hash::{Hash, Hasher},
 | 
					    hash::{Hash, Hasher},
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -258,7 +258,7 @@ DELETE FROM guilds WHERE guild = ?
 | 
				
			|||||||
            }
 | 
					            }
 | 
				
			||||||
            Interaction::MessageComponent(component) => {
 | 
					            Interaction::MessageComponent(component) => {
 | 
				
			||||||
                let component_model = ComponentDataModel::from_custom_id(&component.data.custom_id);
 | 
					                let component_model = ComponentDataModel::from_custom_id(&component.data.custom_id);
 | 
				
			||||||
                component_model.act(component).await;
 | 
					                component_model.act(&ctx, component).await;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            _ => {}
 | 
					            _ => {}
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -3,13 +3,13 @@ use serenity::model::id::ChannelId;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
use crate::consts::REGEX_CHANNEL;
 | 
					use crate::consts::REGEX_CHANNEL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#[derive(Serialize, Deserialize)]
 | 
					#[derive(Serialize, Deserialize, Copy, Clone, Debug)]
 | 
				
			||||||
pub enum TimeDisplayType {
 | 
					pub enum TimeDisplayType {
 | 
				
			||||||
    Absolute = 0,
 | 
					    Absolute = 0,
 | 
				
			||||||
    Relative = 1,
 | 
					    Relative = 1,
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#[derive(Serialize, Deserialize)]
 | 
					#[derive(Serialize, Deserialize, Copy, Clone, Debug)]
 | 
				
			||||||
pub struct LookFlags {
 | 
					pub struct LookFlags {
 | 
				
			||||||
    pub show_disabled: bool,
 | 
					    pub show_disabled: bool,
 | 
				
			||||||
    pub channel_id: Option<ChannelId>,
 | 
					    pub channel_id: Option<ChannelId>,
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user