attempt to flesh out send support for channel/message. Currently does not build
This commit is contained in:
parent
d414e65fd9
commit
5b9f1610dd
@ -1,8 +1,8 @@
|
||||
use {Channel, User};
|
||||
|
||||
#[derive(Debug, Clone)]
|
||||
pub enum Event {
|
||||
Message { sender: User, channel: Option<Channel>, content: String },
|
||||
Join { channel: Channel },
|
||||
Quit { channel: Channel }
|
||||
#[derive(Clone)]
|
||||
pub enum Event<'a> {
|
||||
Message { sender: User<'a>, channel: Option<Channel<'a>>, content: String },
|
||||
Join { channel: Channel<'a> },
|
||||
Quit { channel: Channel<'a> }
|
||||
}
|
||||
|
22
src/lib.rs
22
src/lib.rs
@ -78,26 +78,28 @@ impl Tenquestionmarks {
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone)]
|
||||
pub struct Channel {
|
||||
#[derive(Clone)]
|
||||
pub struct Channel<'a> {
|
||||
name: String,
|
||||
description: String,
|
||||
topic: String
|
||||
topic: String,
|
||||
send_function: &'a Fn(&Channel, &str)
|
||||
}
|
||||
|
||||
impl Channel {
|
||||
impl<'a> Channel<'a> {
|
||||
pub fn send (&self, message: &str) {
|
||||
println!("send to {:?}: {:?}", self.name, message);
|
||||
(self.send_function)(self, message);
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone)]
|
||||
pub struct User {
|
||||
name: String
|
||||
#[derive(Clone)]
|
||||
pub struct User<'a> {
|
||||
name: String,
|
||||
send_function: &'a Fn(&User, &str)
|
||||
}
|
||||
|
||||
impl User {
|
||||
impl<'a> User<'a> {
|
||||
pub fn send (&self, message: &str) {
|
||||
println!("send to {:?}: {:?}", self.name, message);
|
||||
(self.send_function)(self, message);
|
||||
}
|
||||
}
|
||||
|
@ -37,10 +37,22 @@ impl Plugin for DiscordPlugin {
|
||||
match connection.recv_event() {
|
||||
Ok(Event::MessageCreate(message)) => {
|
||||
let author = User {
|
||||
name: message.author.name
|
||||
name: message.author.name,
|
||||
send_function: &(|user: &User, message: &str| {
|
||||
println!("Send to {:?}: {:?}", user.name, message);
|
||||
})
|
||||
};
|
||||
|
||||
sender.send(event::Event::Message { sender: author, content: message.content, channel: None });
|
||||
let channel = Channel {
|
||||
name: String::from("channel"),
|
||||
description: String::from(""),
|
||||
topic: String::from(""),
|
||||
send_function: &(|channel: &Channel, message: &str| {
|
||||
println!("Send to {:?}: {:?}", channel.name, message);
|
||||
})
|
||||
};
|
||||
|
||||
sender.send(event::Event::Message { sender: author, content: message.content, channel: Option::Some(channel) });
|
||||
}
|
||||
Ok(_) => {}
|
||||
Err(discord::Error::Closed(code, body)) => {
|
||||
|
@ -8,23 +8,22 @@ use User;
|
||||
use std::sync::mpsc::Sender;
|
||||
use event::Event;
|
||||
|
||||
pub struct StdinPlugin {
|
||||
user: User
|
||||
}
|
||||
pub struct StdinPlugin {}
|
||||
|
||||
impl StdinPlugin {
|
||||
pub fn new (configuration: &Table) -> Box<Plugin> {
|
||||
Box::new(StdinPlugin {
|
||||
user: User {
|
||||
name: String::from("Dave")
|
||||
}
|
||||
})
|
||||
Box::new(StdinPlugin {})
|
||||
}
|
||||
}
|
||||
|
||||
impl Plugin for StdinPlugin {
|
||||
fn produce_events<'a>(&'a self, sender: Sender<Event>) {
|
||||
let user = &self.user;
|
||||
let user = User {
|
||||
name: String::from("Dave"),
|
||||
send_function: &(|user: &User, message: &str| {
|
||||
println!("Send to {:?}: {:?}", user.name, message);
|
||||
})
|
||||
};
|
||||
|
||||
loop {
|
||||
let mut input = String::new();
|
||||
|
Loading…
x
Reference in New Issue
Block a user