diff options
| author | Jokler <jokler.contact@gmail.com> | 2017-10-04 04:35:27 +0200 |
|---|---|---|
| committer | Jokler <jokler.contact@gmail.com> | 2017-10-04 04:35:27 +0200 |
| commit | 4446aca4055da69daa398ed3103b069e65a7f2c1 (patch) | |
| tree | f59c0cc4cb5f5d8c1dcfd386cf17f01542c6ff5c /src/plugin.rs | |
| parent | 298b43631805cbf9fb5ab78fcb5d784a97879d21 (diff) | |
| download | frippy-4446aca4055da69daa398ed3103b069e65a7f2c1.tar.gz frippy-4446aca4055da69daa398ed3103b069e65a7f2c1.zip | |
Initial bot source
Diffstat (limited to 'src/plugin.rs')
| -rw-r--r-- | src/plugin.rs | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/src/plugin.rs b/src/plugin.rs new file mode 100644 index 0000000..473cab1 --- /dev/null +++ b/src/plugin.rs @@ -0,0 +1,35 @@ +use std::fmt; +use irc::client::prelude::*; +use irc::error::Error as IrcError; + +pub trait Plugin: Send + Sync + fmt::Debug { + fn is_allowed(&self, server: &IrcServer, message: &Message) -> bool; + fn execute(&mut self, server: &IrcServer, message: &Message) -> Result<(), IrcError>; +} + +#[macro_export] +macro_rules! register_plugin { + ($t:ident) => { + #[derive(Debug)] + pub struct $t; + + impl $t { + pub fn new() -> $t { + $t { } + } + } + }; + + ($t:ident, $element: ident: $ty: ty) => { + #[derive(Debug)] + pub struct $t { + $element: $ty + } + + impl $t { + pub fn new() -> $t { + $t { $element: <$ty>::new() } + } + } + }; +} |
