added count command
This commit is contained in:
		
							
								
								
									
										326
									
								
								Cargo.lock
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										326
									
								
								Cargo.lock
									
									
									
										generated
									
									
									
								
							@@ -8,6 +8,15 @@ version = "1.0.2"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe"
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "aho-corasick"
 | 
			
		||||
version = "0.7.18"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
checksum = "1e37cfd5e7657ada45f742d6e99ca5788580b5c529dc78faf11ece6dc702656f"
 | 
			
		||||
dependencies = [
 | 
			
		||||
 "memchr",
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "async-trait"
 | 
			
		||||
version = "0.1.50"
 | 
			
		||||
@@ -147,6 +156,16 @@ dependencies = [
 | 
			
		||||
 "cfg-if",
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "crypto-mac"
 | 
			
		||||
version = "0.10.0"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
checksum = "4857fd85a0c34b3c3297875b747c1e02e06b6a0ea32dd892d8192b9ce0813ea6"
 | 
			
		||||
dependencies = [
 | 
			
		||||
 "generic-array",
 | 
			
		||||
 "subtle",
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "digest"
 | 
			
		||||
version = "0.9.0"
 | 
			
		||||
@@ -165,6 +184,12 @@ dependencies = [
 | 
			
		||||
 "cfg-if",
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "fallible-iterator"
 | 
			
		||||
version = "0.2.0"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
checksum = "4443176a9f2c162692bd3d352d745ef9413eec5782a80d8fd6f8a1ac692a07f7"
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "flate2"
 | 
			
		||||
version = "1.0.20"
 | 
			
		||||
@@ -201,6 +226,7 @@ checksum = "0e7e43a803dae2fa37c1f6a8fe121e1f7bf9548b4dfc0522a42f34145dadfc27"
 | 
			
		||||
dependencies = [
 | 
			
		||||
 "futures-channel",
 | 
			
		||||
 "futures-core",
 | 
			
		||||
 "futures-executor",
 | 
			
		||||
 "futures-io",
 | 
			
		||||
 "futures-sink",
 | 
			
		||||
 "futures-task",
 | 
			
		||||
@@ -223,6 +249,17 @@ version = "0.3.15"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
checksum = "0402f765d8a89a26043b889b26ce3c4679d268fa6bb22cd7c6aad98340e179d1"
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "futures-executor"
 | 
			
		||||
version = "0.3.15"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
checksum = "badaa6a909fac9e7236d0620a2f57f7664640c56575b71a7552fbd68deafab79"
 | 
			
		||||
dependencies = [
 | 
			
		||||
 "futures-core",
 | 
			
		||||
 "futures-task",
 | 
			
		||||
 "futures-util",
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "futures-io"
 | 
			
		||||
version = "0.3.15"
 | 
			
		||||
@@ -296,6 +333,17 @@ dependencies = [
 | 
			
		||||
 "wasi 0.9.0+wasi-snapshot-preview1",
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "getrandom"
 | 
			
		||||
version = "0.2.3"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
checksum = "7fcd999463524c52659517fe2cea98493cfe485d10565e7b0fb07dbba7ad2753"
 | 
			
		||||
dependencies = [
 | 
			
		||||
 "cfg-if",
 | 
			
		||||
 "libc",
 | 
			
		||||
 "wasi 0.10.2+wasi-snapshot-preview1",
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "h2"
 | 
			
		||||
version = "0.3.3"
 | 
			
		||||
@@ -323,13 +371,23 @@ checksum = "d7afe4a420e3fe79967a00898cc1f4db7c8a49a9333a29f8a4bd76a253d5cd04"
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "hermit-abi"
 | 
			
		||||
version = "0.1.18"
 | 
			
		||||
version = "0.1.19"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
checksum = "322f4de77956e22ed0e5032c359a0f1273f1f7f0d79bfa3b8ffbc730d7fbcc5c"
 | 
			
		||||
checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33"
 | 
			
		||||
dependencies = [
 | 
			
		||||
 "libc",
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "hmac"
 | 
			
		||||
version = "0.10.1"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
checksum = "c1441c6b1e930e2817404b5046f1f989899143a12bf92de603b69f4e0aee1e15"
 | 
			
		||||
dependencies = [
 | 
			
		||||
 "crypto-mac",
 | 
			
		||||
 "digest",
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "http"
 | 
			
		||||
version = "0.2.4"
 | 
			
		||||
@@ -433,6 +491,15 @@ dependencies = [
 | 
			
		||||
 "bytes 0.5.6",
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "instant"
 | 
			
		||||
version = "0.1.9"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
checksum = "61124eeebbd69b8190558df225adf7e4caafce0d743919e5d6b19652314ec5ec"
 | 
			
		||||
dependencies = [
 | 
			
		||||
 "cfg-if",
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "ipnet"
 | 
			
		||||
version = "2.3.1"
 | 
			
		||||
@@ -466,6 +533,15 @@ version = "0.2.97"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
checksum = "12b8adadd720df158f4d70dfe7ccc6adb0472d7c55ca83445f6a5ab3e36f8fb6"
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "lock_api"
 | 
			
		||||
version = "0.4.4"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
checksum = "0382880606dff6d15c9476c416d18690b72742aa7b605bb6dd6ec9030fbf07eb"
 | 
			
		||||
dependencies = [
 | 
			
		||||
 "scopeguard",
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "log"
 | 
			
		||||
version = "0.4.14"
 | 
			
		||||
@@ -481,6 +557,17 @@ version = "0.1.8"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
checksum = "7ffc5c5338469d4d3ea17d269fa8ea3512ad247247c30bd2df69e68309ed0a08"
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "md-5"
 | 
			
		||||
version = "0.9.1"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
checksum = "7b5a279bb9607f9f53c22d496eade00d138d1bdcccd07d74650387cf94942a15"
 | 
			
		||||
dependencies = [
 | 
			
		||||
 "block-buffer",
 | 
			
		||||
 "digest",
 | 
			
		||||
 "opaque-debug",
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "memchr"
 | 
			
		||||
version = "2.4.0"
 | 
			
		||||
@@ -585,12 +672,55 @@ version = "0.3.0"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5"
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "parking_lot"
 | 
			
		||||
version = "0.11.1"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
checksum = "6d7744ac029df22dca6284efe4e898991d28e3085c706c972bcd7da4a27a15eb"
 | 
			
		||||
dependencies = [
 | 
			
		||||
 "instant",
 | 
			
		||||
 "lock_api",
 | 
			
		||||
 "parking_lot_core",
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "parking_lot_core"
 | 
			
		||||
version = "0.8.3"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
checksum = "fa7a782938e745763fe6907fc6ba86946d72f49fe7e21de074e08128a99fb018"
 | 
			
		||||
dependencies = [
 | 
			
		||||
 "cfg-if",
 | 
			
		||||
 "instant",
 | 
			
		||||
 "libc",
 | 
			
		||||
 "redox_syscall",
 | 
			
		||||
 "smallvec",
 | 
			
		||||
 "winapi",
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "percent-encoding"
 | 
			
		||||
version = "2.1.0"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
checksum = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e"
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "phf"
 | 
			
		||||
version = "0.8.0"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
checksum = "3dfb61232e34fcb633f43d12c58f83c1df82962dcdfa565a4e866ffc17dafe12"
 | 
			
		||||
dependencies = [
 | 
			
		||||
 "phf_shared",
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "phf_shared"
 | 
			
		||||
version = "0.8.0"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
checksum = "c00cf8b9eafe68dde5e9eaa2cef8ee84a9336a47d566ec55ca16589633b65af7"
 | 
			
		||||
dependencies = [
 | 
			
		||||
 "siphasher",
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "pin-project"
 | 
			
		||||
version = "1.0.7"
 | 
			
		||||
@@ -623,6 +753,35 @@ version = "0.1.0"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "postgres-protocol"
 | 
			
		||||
version = "0.6.1"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
checksum = "ff3e0f70d32e20923cabf2df02913be7c1842d4c772db8065c00fcfdd1d1bff3"
 | 
			
		||||
dependencies = [
 | 
			
		||||
 "base64 0.13.0",
 | 
			
		||||
 "byteorder",
 | 
			
		||||
 "bytes 1.0.1",
 | 
			
		||||
 "fallible-iterator",
 | 
			
		||||
 "hmac",
 | 
			
		||||
 "md-5",
 | 
			
		||||
 "memchr",
 | 
			
		||||
 "rand 0.8.4",
 | 
			
		||||
 "sha2",
 | 
			
		||||
 "stringprep",
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "postgres-types"
 | 
			
		||||
version = "0.2.1"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
checksum = "430f4131e1b7657b0cd9a2b0c3408d77c9a43a042d300b8c77f981dffcc43a2f"
 | 
			
		||||
dependencies = [
 | 
			
		||||
 "bytes 1.0.1",
 | 
			
		||||
 "fallible-iterator",
 | 
			
		||||
 "postgres-protocol",
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "ppv-lite86"
 | 
			
		||||
version = "0.2.10"
 | 
			
		||||
@@ -665,11 +824,23 @@ version = "0.7.3"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03"
 | 
			
		||||
dependencies = [
 | 
			
		||||
 "getrandom",
 | 
			
		||||
 "getrandom 0.1.16",
 | 
			
		||||
 "libc",
 | 
			
		||||
 "rand_chacha",
 | 
			
		||||
 "rand_core",
 | 
			
		||||
 "rand_hc",
 | 
			
		||||
 "rand_chacha 0.2.2",
 | 
			
		||||
 "rand_core 0.5.1",
 | 
			
		||||
 "rand_hc 0.2.0",
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "rand"
 | 
			
		||||
version = "0.8.4"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
checksum = "2e7573632e6454cf6b99d7aac4ccca54be06da05aca2ef7423d22d27d4d4bcd8"
 | 
			
		||||
dependencies = [
 | 
			
		||||
 "libc",
 | 
			
		||||
 "rand_chacha 0.3.1",
 | 
			
		||||
 "rand_core 0.6.3",
 | 
			
		||||
 "rand_hc 0.3.1",
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
@@ -679,7 +850,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402"
 | 
			
		||||
dependencies = [
 | 
			
		||||
 "ppv-lite86",
 | 
			
		||||
 "rand_core",
 | 
			
		||||
 "rand_core 0.5.1",
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "rand_chacha"
 | 
			
		||||
version = "0.3.1"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
 | 
			
		||||
dependencies = [
 | 
			
		||||
 "ppv-lite86",
 | 
			
		||||
 "rand_core 0.6.3",
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
@@ -688,7 +869,16 @@ version = "0.5.1"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19"
 | 
			
		||||
dependencies = [
 | 
			
		||||
 "getrandom",
 | 
			
		||||
 "getrandom 0.1.16",
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "rand_core"
 | 
			
		||||
version = "0.6.3"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
checksum = "d34f1408f55294453790c48b2f1ebbb1c5b4b7563eb1f418bcfcfdbb06ebb4e7"
 | 
			
		||||
dependencies = [
 | 
			
		||||
 "getrandom 0.2.3",
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
@@ -697,9 +887,44 @@ version = "0.2.0"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c"
 | 
			
		||||
dependencies = [
 | 
			
		||||
 "rand_core",
 | 
			
		||||
 "rand_core 0.5.1",
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "rand_hc"
 | 
			
		||||
version = "0.3.1"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
checksum = "d51e9f596de227fda2ea6c84607f5558e196eeaf43c986b724ba4fb8fdf497e7"
 | 
			
		||||
dependencies = [
 | 
			
		||||
 "rand_core 0.6.3",
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "redox_syscall"
 | 
			
		||||
version = "0.2.9"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
checksum = "5ab49abadf3f9e1c4bc499e8845e152ad87d2ad2d30371841171169e9d75feee"
 | 
			
		||||
dependencies = [
 | 
			
		||||
 "bitflags",
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "regex"
 | 
			
		||||
version = "1.5.4"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
checksum = "d07a8629359eb56f1e2fb1652bb04212c072a87ba68546a04065d525673ac461"
 | 
			
		||||
dependencies = [
 | 
			
		||||
 "aho-corasick",
 | 
			
		||||
 "memchr",
 | 
			
		||||
 "regex-syntax",
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "regex-syntax"
 | 
			
		||||
version = "0.6.25"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
checksum = "f497285884f3fcff424ffc933e56d7cbca511def0c9831a7f9b5f6153e3cc89b"
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "reqwest"
 | 
			
		||||
version = "0.11.4"
 | 
			
		||||
@@ -771,6 +996,12 @@ version = "1.0.5"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
checksum = "71d301d4193d031abdd79ff7e3dd721168a9572ef3fe51a1517aba235bd8f86e"
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "scopeguard"
 | 
			
		||||
version = "1.1.0"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd"
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "sct"
 | 
			
		||||
version = "0.6.1"
 | 
			
		||||
@@ -864,6 +1095,19 @@ dependencies = [
 | 
			
		||||
 "opaque-debug",
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "sha2"
 | 
			
		||||
version = "0.9.5"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
checksum = "b362ae5752fd2137731f9fa25fd4d9058af34666ca1966fb969119cc35719f12"
 | 
			
		||||
dependencies = [
 | 
			
		||||
 "block-buffer",
 | 
			
		||||
 "cfg-if",
 | 
			
		||||
 "cpufeatures",
 | 
			
		||||
 "digest",
 | 
			
		||||
 "opaque-debug",
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "signal-hook-registry"
 | 
			
		||||
version = "1.4.0"
 | 
			
		||||
@@ -877,17 +1121,31 @@ dependencies = [
 | 
			
		||||
name = "singh3"
 | 
			
		||||
version = "0.1.0"
 | 
			
		||||
dependencies = [
 | 
			
		||||
 "regex",
 | 
			
		||||
 "serenity",
 | 
			
		||||
 "tokio",
 | 
			
		||||
 "tokio-postgres",
 | 
			
		||||
 "tracing",
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "siphasher"
 | 
			
		||||
version = "0.3.5"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
checksum = "cbce6d4507c7e4a3962091436e56e95290cb71fa302d0d270e32130b75fbff27"
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "slab"
 | 
			
		||||
version = "0.4.3"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
checksum = "f173ac3d1a7e3b28003f40de0b5ce7fe2710f9b9dc3fc38664cebee46b3b6527"
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "smallvec"
 | 
			
		||||
version = "1.6.1"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
checksum = "fe0f37c9e8f3c5a4a66ad655a93c74daac4ad00c441533bf5c6e7990bb42604e"
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "socket2"
 | 
			
		||||
version = "0.4.0"
 | 
			
		||||
@@ -910,6 +1168,22 @@ version = "1.1.0"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "stringprep"
 | 
			
		||||
version = "0.1.2"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
checksum = "8ee348cb74b87454fff4b551cbf727025810a004f88aeacae7f85b87f4e9a1c1"
 | 
			
		||||
dependencies = [
 | 
			
		||||
 "unicode-bidi",
 | 
			
		||||
 "unicode-normalization",
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "subtle"
 | 
			
		||||
version = "2.4.0"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
checksum = "1e81da0851ada1f3e9d4312c704aa4f8806f0f9d69faaf8df2f3464b4a9437c2"
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "syn"
 | 
			
		||||
version = "1.0.73"
 | 
			
		||||
@@ -923,12 +1197,11 @@ dependencies = [
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "time"
 | 
			
		||||
version = "0.1.44"
 | 
			
		||||
version = "0.1.43"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
checksum = "6db9e6914ab8b1ae1c260a4ae7a49b6c5611b40328a735b21862567685e73255"
 | 
			
		||||
checksum = "ca8a50ef2360fbd1eeb0ecd46795a87a19024eb4b53c5dc916ca1fd95fe62438"
 | 
			
		||||
dependencies = [
 | 
			
		||||
 "libc",
 | 
			
		||||
 "wasi 0.10.0+wasi-snapshot-preview1",
 | 
			
		||||
 "winapi",
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
@@ -977,6 +1250,29 @@ dependencies = [
 | 
			
		||||
 "syn",
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "tokio-postgres"
 | 
			
		||||
version = "0.7.2"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
checksum = "2d2b1383c7e4fb9a09e292c7c6afb7da54418d53b045f1c1fac7a911411a2b8b"
 | 
			
		||||
dependencies = [
 | 
			
		||||
 "async-trait",
 | 
			
		||||
 "byteorder",
 | 
			
		||||
 "bytes 1.0.1",
 | 
			
		||||
 "fallible-iterator",
 | 
			
		||||
 "futures",
 | 
			
		||||
 "log",
 | 
			
		||||
 "parking_lot",
 | 
			
		||||
 "percent-encoding",
 | 
			
		||||
 "phf",
 | 
			
		||||
 "pin-project-lite",
 | 
			
		||||
 "postgres-protocol",
 | 
			
		||||
 "postgres-types",
 | 
			
		||||
 "socket2",
 | 
			
		||||
 "tokio",
 | 
			
		||||
 "tokio-util",
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "tokio-rustls"
 | 
			
		||||
version = "0.22.0"
 | 
			
		||||
@@ -1060,7 +1356,7 @@ dependencies = [
 | 
			
		||||
 "httparse",
 | 
			
		||||
 "input_buffer",
 | 
			
		||||
 "log",
 | 
			
		||||
 "rand",
 | 
			
		||||
 "rand 0.7.3",
 | 
			
		||||
 "sha-1",
 | 
			
		||||
 "url",
 | 
			
		||||
 "utf-8",
 | 
			
		||||
@@ -1165,9 +1461,9 @@ checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519"
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "wasi"
 | 
			
		||||
version = "0.10.0+wasi-snapshot-preview1"
 | 
			
		||||
version = "0.10.2+wasi-snapshot-preview1"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
checksum = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f"
 | 
			
		||||
checksum = "fd6fbd9a79829dd1ad0cc20627bf1ed606756a7f77edff7b66b7064f9cb327c6"
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "wasm-bindgen"
 | 
			
		||||
 
 | 
			
		||||
@@ -6,6 +6,8 @@ edition = "2018"
 | 
			
		||||
 | 
			
		||||
[dependencies]
 | 
			
		||||
tracing = "0.1.22"
 | 
			
		||||
regex = "1.5.4"
 | 
			
		||||
tokio-postgres = "0.7.2"
 | 
			
		||||
 | 
			
		||||
[dependencies.serenity]
 | 
			
		||||
version = "0.10.8"
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										46
									
								
								src/commands/count.rs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										46
									
								
								src/commands/count.rs
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,46 @@
 | 
			
		||||
use regex::Regex;
 | 
			
		||||
use serenity::{
 | 
			
		||||
    framework::standard::{macros::command, Args, CommandResult},
 | 
			
		||||
    model::prelude::*,
 | 
			
		||||
    prelude::*,
 | 
			
		||||
};
 | 
			
		||||
use std::{collections::HashMap, env};
 | 
			
		||||
use tokio_postgres::NoTls;
 | 
			
		||||
 | 
			
		||||
#[command]
 | 
			
		||||
pub async fn kitna(ctx: &Context, msg: &Message, mut args: Args) -> CommandResult {
 | 
			
		||||
    let query: String = args.single::<String>()?;
 | 
			
		||||
    let words: HashMap<&str, Regex> = [
 | 
			
		||||
        ("nword", Regex::new(r"(?i)(nig+(er|a)|nig{2,})").unwrap()),
 | 
			
		||||
        ("acha", Regex::new(r"(?i)a(c??h??|6??)a+").unwrap()),
 | 
			
		||||
        ("sus", Regex::new(r"(?i)sus|(?i)amon?g\s?us").unwrap()),
 | 
			
		||||
    ]
 | 
			
		||||
    .iter()
 | 
			
		||||
    .cloned()
 | 
			
		||||
    .collect();
 | 
			
		||||
    let db: String = env::var("DB_URL").expect("bhay DB_URL daal na");
 | 
			
		||||
    let (client, conn) = tokio_postgres::connect(&db, NoTls)
 | 
			
		||||
        .await
 | 
			
		||||
        .expect("cant connect bha");
 | 
			
		||||
    tokio::spawn(async move {
 | 
			
		||||
        if let Err(e) = conn.await {
 | 
			
		||||
            eprintln!("connection error: {}", e);
 | 
			
		||||
        }
 | 
			
		||||
    });
 | 
			
		||||
    let id = msg.author.id.as_u64().to_owned().to_string();
 | 
			
		||||
    for (name, regex) in words {
 | 
			
		||||
        if regex.is_match(&query) || &query == name {
 | 
			
		||||
            let query_result = client
 | 
			
		||||
                .query_one(
 | 
			
		||||
                    format!("SELECT count FROM user{} where name='{}'", id, name).as_str(),
 | 
			
		||||
                    &[],
 | 
			
		||||
                )
 | 
			
		||||
                .await
 | 
			
		||||
                .expect("cant select the count");
 | 
			
		||||
            let count: i32 = query_result.get("count");
 | 
			
		||||
            msg.reply(ctx, format!("{} count for you: {}", name, count)).await?;
 | 
			
		||||
            break;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    Ok(())
 | 
			
		||||
}
 | 
			
		||||
@@ -1 +1,2 @@
 | 
			
		||||
pub mod general;
 | 
			
		||||
pub mod count;
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										71
									
								
								src/handler/count.rs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										71
									
								
								src/handler/count.rs
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,71 @@
 | 
			
		||||
use serenity::model::channel::Message;
 | 
			
		||||
use std::collections::HashMap;
 | 
			
		||||
use std::env;
 | 
			
		||||
use regex::Regex;
 | 
			
		||||
use tokio_postgres::NoTls;
 | 
			
		||||
 | 
			
		||||
pub async fn count(msg: Message) {
 | 
			
		||||
    let words: HashMap<&str, Regex> = [
 | 
			
		||||
        ("nword", Regex::new(r"(?i)(nig+(er|a)|nig{2,})").unwrap()),
 | 
			
		||||
        ("acha", Regex::new(r"(?i)a(c??h??|6??)a+").unwrap()),
 | 
			
		||||
        ("sus", Regex::new(r"(?i)sus|(?i)amon?g\s?us").unwrap()),
 | 
			
		||||
    ]
 | 
			
		||||
    .iter()
 | 
			
		||||
    .cloned()
 | 
			
		||||
    .collect();
 | 
			
		||||
    let db: String = env::var("DB_URL").expect("bhay DB_URL daal na");
 | 
			
		||||
    let (client, conn) = tokio_postgres::connect(&db, NoTls)
 | 
			
		||||
        .await
 | 
			
		||||
        .expect("cant connect bha");
 | 
			
		||||
    tokio::spawn(async move {
 | 
			
		||||
        if let Err(e) = conn.await {
 | 
			
		||||
            eprintln!("connection error: {}", e);
 | 
			
		||||
        }
 | 
			
		||||
    });
 | 
			
		||||
    let id = msg.author.id.as_u64().to_owned().to_string();
 | 
			
		||||
    client
 | 
			
		||||
        .execute(
 | 
			
		||||
            format!(
 | 
			
		||||
                "
 | 
			
		||||
        CREATE TABLE IF NOT EXISTS user{} (
 | 
			
		||||
            id              SERIAL PRIMARY KEY,
 | 
			
		||||
            name            VARCHAR NOT NULL,
 | 
			
		||||
            count           INTEGER NOT NULL
 | 
			
		||||
            )
 | 
			
		||||
    ",
 | 
			
		||||
                id
 | 
			
		||||
            )
 | 
			
		||||
            .as_str(),
 | 
			
		||||
            &[],
 | 
			
		||||
        )
 | 
			
		||||
        .await
 | 
			
		||||
        .expect("cant create table");
 | 
			
		||||
 | 
			
		||||
    for name in ["nword", "acha", "sus"] {
 | 
			
		||||
        if words[name].is_match(&msg.content) {
 | 
			
		||||
            let query_result = client
 | 
			
		||||
                .query(
 | 
			
		||||
                    format!("SELECT count FROM user{} where name='{}'", id, name).as_str(),
 | 
			
		||||
                    &[],
 | 
			
		||||
                )
 | 
			
		||||
                .await
 | 
			
		||||
                .expect("cant select the count");
 | 
			
		||||
            if query_result.is_empty() {
 | 
			
		||||
                client
 | 
			
		||||
                    .execute(
 | 
			
		||||
                        format!("insert into user{} (name, count) values ('{}', 0)", id, name).as_str(),
 | 
			
		||||
                        &[],
 | 
			
		||||
                    )
 | 
			
		||||
                    .await
 | 
			
		||||
                    .expect("cant insert shit");
 | 
			
		||||
            }
 | 
			
		||||
            client
 | 
			
		||||
                .execute(
 | 
			
		||||
                    format!("UPDATE user{} SET count = count + 1 where name='{}'", id, name).as_str(),
 | 
			
		||||
                    &[],
 | 
			
		||||
                )
 | 
			
		||||
                .await
 | 
			
		||||
                .expect("cant update");
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -1,9 +1,11 @@
 | 
			
		||||
mod interactions;
 | 
			
		||||
mod count;
 | 
			
		||||
use serenity::{
 | 
			
		||||
    async_trait,
 | 
			
		||||
    model::{
 | 
			
		||||
        event::ResumedEvent,
 | 
			
		||||
        gateway::Ready,
 | 
			
		||||
        channel::Message,
 | 
			
		||||
        interactions::{
 | 
			
		||||
            ApplicationCommand, Interaction, InteractionData, InteractionResponseType,
 | 
			
		||||
            InteractionType,
 | 
			
		||||
@@ -27,6 +29,10 @@ impl EventHandler for Handler {
 | 
			
		||||
    async fn resume(&self, _: Context, _: ResumedEvent) {
 | 
			
		||||
        info!("how th when the");
 | 
			
		||||
    }
 | 
			
		||||
    async fn message(&self, _: Context, msg: Message) {
 | 
			
		||||
        count::count(msg).await;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    async fn interaction_create(&self, ctx: Context, interaction: Interaction) {
 | 
			
		||||
        if interaction.kind == InteractionType::ApplicationCommand {
 | 
			
		||||
            if let Some(InteractionData::ApplicationCommand(data)) = interaction.data.as_ref() {
 | 
			
		||||
 
 | 
			
		||||
@@ -10,6 +10,7 @@ use std::{collections::HashSet, env, sync::Arc};
 | 
			
		||||
use tracing::error;
 | 
			
		||||
pub struct ShardManagerContainer;
 | 
			
		||||
use commands::general::*;
 | 
			
		||||
use commands::count::*;
 | 
			
		||||
use handler::Handler;
 | 
			
		||||
 | 
			
		||||
impl TypeMapKey for ShardManagerContainer {
 | 
			
		||||
@@ -20,6 +21,10 @@ impl TypeMapKey for ShardManagerContainer {
 | 
			
		||||
#[commands(ping)]
 | 
			
		||||
struct General;
 | 
			
		||||
 | 
			
		||||
#[group]
 | 
			
		||||
#[commands(kitna)]
 | 
			
		||||
struct Count;
 | 
			
		||||
 | 
			
		||||
#[tokio::main]
 | 
			
		||||
async fn main() {
 | 
			
		||||
    let token = env::var("DISCORD_TOKEN").expect("Token daal madarchod");
 | 
			
		||||
@@ -38,7 +43,8 @@ async fn main() {
 | 
			
		||||
 | 
			
		||||
    let framework = StandardFramework::new()
 | 
			
		||||
        .configure(|c| c.owners(owners).prefix("xx"))
 | 
			
		||||
        .group(&GENERAL_GROUP);
 | 
			
		||||
        .group(&GENERAL_GROUP)
 | 
			
		||||
        .group(&COUNT_GROUP);
 | 
			
		||||
 | 
			
		||||
    let mut client = Client::builder(&token)
 | 
			
		||||
        .framework(framework)
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user