Implement replies
This commit is contained in:
parent
37305a5465
commit
1fd304ddd0
2 changed files with 50 additions and 36 deletions
47
Cargo.lock
generated
47
Cargo.lock
generated
|
@ -335,9 +335,9 @@ checksum = "703642b98a00b3b90513279a8ede3fcfa479c126c5fb46e78f3051522f021403"
|
|||
|
||||
[[package]]
|
||||
name = "blake3"
|
||||
version = "1.4.0"
|
||||
version = "1.4.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "729b71f35bd3fa1a4c86b85d32c8b9069ea7fe14f7a53cfabb65f62d4265b888"
|
||||
checksum = "199c42ab6972d92c9f8995f086273d25c42fc0f7b2a1fcefba465c1352d25ba5"
|
||||
dependencies = [
|
||||
"arrayref",
|
||||
"arrayvec",
|
||||
|
@ -507,9 +507,9 @@ checksum = "e4c78c047431fee22c1a7bb92e00ad095a02a983affe4d8a72e2a2c62c1b94f3"
|
|||
|
||||
[[package]]
|
||||
name = "constant_time_eq"
|
||||
version = "0.2.6"
|
||||
version = "0.3.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "21a53c0a4d288377e7415b53dcfc3c04da5cdc2cc95c8d5ac178b58f0b861ad6"
|
||||
checksum = "f7144d30dcf0fafbce74250a3963025d8d52177934239851c917d29f1df280c2"
|
||||
|
||||
[[package]]
|
||||
name = "core-foundation"
|
||||
|
@ -1382,7 +1382,7 @@ dependencies = [
|
|||
[[package]]
|
||||
name = "matrix-sdk"
|
||||
version = "0.6.2"
|
||||
source = "git+https://github.com/matrix-org/matrix-rust-sdk.git#fe189fda06b889c4077ff47d58ee5289b0cf630c"
|
||||
source = "git+https://github.com/matrix-org/matrix-rust-sdk.git#0ef819bca7173fafb883c969512f980457b99a02"
|
||||
dependencies = [
|
||||
"anymap2",
|
||||
"async-stream",
|
||||
|
@ -1422,7 +1422,7 @@ dependencies = [
|
|||
[[package]]
|
||||
name = "matrix-sdk-base"
|
||||
version = "0.6.1"
|
||||
source = "git+https://github.com/matrix-org/matrix-rust-sdk.git#fe189fda06b889c4077ff47d58ee5289b0cf630c"
|
||||
source = "git+https://github.com/matrix-org/matrix-rust-sdk.git#0ef819bca7173fafb883c969512f980457b99a02"
|
||||
dependencies = [
|
||||
"async-trait",
|
||||
"bitflags 2.3.3",
|
||||
|
@ -1444,7 +1444,7 @@ dependencies = [
|
|||
[[package]]
|
||||
name = "matrix-sdk-common"
|
||||
version = "0.6.0"
|
||||
source = "git+https://github.com/matrix-org/matrix-rust-sdk.git#fe189fda06b889c4077ff47d58ee5289b0cf630c"
|
||||
source = "git+https://github.com/matrix-org/matrix-rust-sdk.git#0ef819bca7173fafb883c969512f980457b99a02"
|
||||
dependencies = [
|
||||
"futures-core",
|
||||
"futures-util",
|
||||
|
@ -1460,7 +1460,7 @@ dependencies = [
|
|||
[[package]]
|
||||
name = "matrix-sdk-crypto"
|
||||
version = "0.6.0"
|
||||
source = "git+https://github.com/matrix-org/matrix-rust-sdk.git#fe189fda06b889c4077ff47d58ee5289b0cf630c"
|
||||
source = "git+https://github.com/matrix-org/matrix-rust-sdk.git#0ef819bca7173fafb883c969512f980457b99a02"
|
||||
dependencies = [
|
||||
"aes",
|
||||
"async-std",
|
||||
|
@ -1496,7 +1496,7 @@ dependencies = [
|
|||
[[package]]
|
||||
name = "matrix-sdk-indexeddb"
|
||||
version = "0.2.0"
|
||||
source = "git+https://github.com/matrix-org/matrix-rust-sdk.git#fe189fda06b889c4077ff47d58ee5289b0cf630c"
|
||||
source = "git+https://github.com/matrix-org/matrix-rust-sdk.git#0ef819bca7173fafb883c969512f980457b99a02"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"async-trait",
|
||||
|
@ -1521,10 +1521,11 @@ dependencies = [
|
|||
[[package]]
|
||||
name = "matrix-sdk-sqlite"
|
||||
version = "0.1.0"
|
||||
source = "git+https://github.com/matrix-org/matrix-rust-sdk.git#fe189fda06b889c4077ff47d58ee5289b0cf630c"
|
||||
source = "git+https://github.com/matrix-org/matrix-rust-sdk.git#0ef819bca7173fafb883c969512f980457b99a02"
|
||||
dependencies = [
|
||||
"async-trait",
|
||||
"deadpool-sqlite",
|
||||
"itertools 0.11.0",
|
||||
"matrix-sdk-base",
|
||||
"matrix-sdk-crypto",
|
||||
"matrix-sdk-store-encryption",
|
||||
|
@ -1542,7 +1543,7 @@ dependencies = [
|
|||
[[package]]
|
||||
name = "matrix-sdk-store-encryption"
|
||||
version = "0.2.0"
|
||||
source = "git+https://github.com/matrix-org/matrix-rust-sdk.git#fe189fda06b889c4077ff47d58ee5289b0cf630c"
|
||||
source = "git+https://github.com/matrix-org/matrix-rust-sdk.git#0ef819bca7173fafb883c969512f980457b99a02"
|
||||
dependencies = [
|
||||
"blake3",
|
||||
"chacha20poly1305",
|
||||
|
@ -2241,9 +2242,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "schmfy"
|
||||
version = "0.1.0"
|
||||
version = "0.1.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "9250f38131044f00dc302af28c08a2e121b47c6cf2ad614859604128f002c428"
|
||||
checksum = "4c61d72da9ef0aed4dbf5ed4d312d3b15733b1e862295af1a6660c4202a2b416"
|
||||
|
||||
[[package]]
|
||||
name = "scopeguard"
|
||||
|
@ -2276,9 +2277,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "serde"
|
||||
version = "1.0.166"
|
||||
version = "1.0.167"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d01b7404f9d441d3ad40e6a636a7782c377d2abdbe4fa2440e2edcc2f4f10db8"
|
||||
checksum = "7daf513456463b42aa1d94cff7e0c24d682b429f020b9afa4f5ba5c40a22b237"
|
||||
dependencies = [
|
||||
"serde_derive",
|
||||
]
|
||||
|
@ -2294,9 +2295,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "serde_derive"
|
||||
version = "1.0.166"
|
||||
version = "1.0.167"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "5dd83d6dde2b6b2d466e14d9d1acce8816dedee94f735eac6395808b3483c6d6"
|
||||
checksum = "b69b106b68bc8054f0e974e70d19984040f8a5cf9215ca82626ea4853f82c4b9"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
|
@ -2484,18 +2485,18 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "thiserror"
|
||||
version = "1.0.41"
|
||||
version = "1.0.43"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "c16a64ba9387ef3fdae4f9c1a7f07a0997fce91985c0336f1ddc1822b3b37802"
|
||||
checksum = "a35fc5b8971143ca348fa6df4f024d4d55264f3468c71ad1c2f365b0a4d58c42"
|
||||
dependencies = [
|
||||
"thiserror-impl",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "thiserror-impl"
|
||||
version = "1.0.41"
|
||||
version = "1.0.43"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d14928354b01c4d6a4f0e549069adef399a284e7995c7ccca94e8a07a5346c59"
|
||||
checksum = "463fe12d7993d3b327787537ce8dd4dfa058de32fc2b195ef3cde03dc4771e8f"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
|
@ -3025,9 +3026,9 @@ checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a"
|
|||
|
||||
[[package]]
|
||||
name = "winnow"
|
||||
version = "0.4.7"
|
||||
version = "0.4.8"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ca0ace3845f0d96209f0375e6d367e3eb87eb65d27d445bdc9f1843a26f39448"
|
||||
checksum = "a9482fe6ceabdf32f3966bfdd350ba69256a97c30253dc616fe0005af24f164e"
|
||||
dependencies = [
|
||||
"memchr",
|
||||
]
|
||||
|
|
31
src/main.rs
31
src/main.rs
|
@ -8,7 +8,7 @@ use matrix_sdk::{
|
|||
room::Room,
|
||||
ruma::events::{room::{
|
||||
member::StrippedRoomMemberEvent,
|
||||
message::{MessageType, OriginalSyncRoomMessageEvent, RoomMessageEventContent},
|
||||
message::{MessageType, OriginalSyncRoomMessageEvent, RoomMessageEventContent, ForwardThread},
|
||||
}, relation::Annotation, reaction::ReactionEventContent},
|
||||
Client,
|
||||
};
|
||||
|
@ -139,7 +139,10 @@ async fn on_room_message(event: OriginalSyncRoomMessageEvent, room: Room) {
|
|||
// First, we need to unpack the message: We only want messages from rooms we are
|
||||
// still in and that are regular text messages - ignoring everything else.
|
||||
let Room::Joined(room) = room else { return };
|
||||
let MessageType::Text(text_content) = event.content.msgtype else { return };
|
||||
let MessageType::Text(text_content) = event.clone().content.msgtype else { return };
|
||||
|
||||
// full event for e.g. replies
|
||||
let full_event = event.clone().into_full_event(room.room_id().to_owned());
|
||||
|
||||
// here comes the actual "logic": when the bot see's a `!party` in the message,
|
||||
// it responds
|
||||
|
@ -243,21 +246,31 @@ async fn on_room_message(event: OriginalSyncRoomMessageEvent, room: Room) {
|
|||
room.send(reaction, None).await.unwrap();
|
||||
}
|
||||
|
||||
if {let mut rng = rand::thread_rng(); rng.gen_range(0..3)} == 0 {
|
||||
|
||||
let msg = text_content.body
|
||||
.split_terminator("\n")
|
||||
.map(|line| {
|
||||
line
|
||||
.split_whitespace()
|
||||
.map(|x| schmfy(String::from(x.to_lowercase())))
|
||||
.map(|x| {
|
||||
if {let mut rng = rand::thread_rng(); rng.gen_range(0..200)} <= x.len()^2 {
|
||||
schmfy(String::from(x.to_lowercase()))
|
||||
} else {
|
||||
x.to_lowercase()
|
||||
}
|
||||
})
|
||||
.collect::<Vec<String>>()
|
||||
.join(" ");
|
||||
.join(" ")
|
||||
})
|
||||
.collect::<Vec<String>>()
|
||||
.join("\n");
|
||||
|
||||
let content = RoomMessageEventContent::text_plain(msg);
|
||||
|
||||
//let content = event.content.make_reply_to(event.content., matrix_sdk::ruma::events::room::message::ForwardThread::Yes)
|
||||
let content = RoomMessageEventContent::text_plain(msg)
|
||||
.make_reply_to(&full_event, ForwardThread::Yes);
|
||||
|
||||
room.send(content, None).await.unwrap();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fn is_allowed_user(user: &str) -> bool {
|
||||
return !(
|
||||
|
|
Loading…
Reference in a new issue