You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
55 lines
2.1 KiB
55 lines
2.1 KiB
use std::thread;
|
|
|
|
use libcwtch;
|
|
use libcwtch::structs::*;
|
|
use libcwtch::CwtchLib;
|
|
use libcwtch::event::Event;
|
|
|
|
fn main() {
|
|
let bot_home = "example_cwtch_dir";
|
|
match std::fs::remove_dir_all(&bot_home) {
|
|
// this will always error on first run as we haven't created the directory, it's just a function to clear it on successive runs, so this error is to be ignored
|
|
_ => (),
|
|
}
|
|
std::fs::create_dir_all(&bot_home).expect("Error creating bot_home directory");
|
|
|
|
let cwtch = libcwtch::new_cwtchlib_go();
|
|
println!("start_cwtch");
|
|
let ret = cwtch.start_cwtch(bot_home, "");
|
|
println!("start_cwtch returned {}", ret);
|
|
|
|
let event_loop_handle = thread::spawn(move || {
|
|
loop {
|
|
let event = cwtch.get_appbus_event();
|
|
println!("event: {:?}", event);
|
|
|
|
match event {
|
|
Event::CwtchStarted => {
|
|
println!("event CwtchStarted!");
|
|
println!("Creating bot");
|
|
cwtch.create_profile("Echobot", "be gay do crime");
|
|
}
|
|
Event::NewPeer { profile_id, tag, created, name, default_picture, picture, online, profile_data } => {
|
|
println!(
|
|
"\n***** {} at {} *****\n",
|
|
name, profile_id.as_str()
|
|
);
|
|
|
|
// process json for profile, contacts and servers...else {
|
|
let profile = profile_data;
|
|
print!("profile: {:?}", profile);
|
|
}
|
|
Event::NewMessageFromPeer { profile_id, conversation_id, contact_id: contact, nick, timestamp_received, message, notification, picture } => {
|
|
let response = Message { o: message.o.into(), d: message.d };
|
|
let response_json =
|
|
serde_json::to_string(&response).expect("Error parsing json response");
|
|
cwtch.send_message( &profile_id, conversation_id, &response_json);
|
|
}
|
|
_ => eprintln!("unhandled event!"),
|
|
};
|
|
}
|
|
});
|
|
|
|
event_loop_handle.join().expect("Error running event loop");
|
|
}
|