1extern crate xmpp;
2
3use xmpp::jid::Jid;
4use xmpp::client::ClientBuilder;
5use xmpp::plugins::stanza_debug::StanzaDebugPlugin;
6use xmpp::plugins::stanza::StanzaPlugin;
7use xmpp::plugins::unhandled_iq::UnhandledIqPlugin;
8use xmpp::plugins::messaging::{MessagingPlugin, MessageEvent};
9use xmpp::plugins::presence::{PresencePlugin, Type, Show};
10use xmpp::plugins::disco::DiscoPlugin;
11use xmpp::plugins::ibb::IbbPlugin;
12use xmpp::plugins::ping::PingPlugin;
13use xmpp::event::{Priority, Propagation};
14
15use std::env;
16
17fn main() {
18 let jid: Jid = env::var("JID").unwrap().parse().unwrap();
19 let pass = env::var("PASS").unwrap();
20 let mut client = ClientBuilder::new(jid.clone())
21 .password(pass)
22 .connect()
23 .unwrap();
24 if env::var("STANZA_DEBUG").is_ok() {
25 client.register_plugin(StanzaDebugPlugin::new());
26 }
27 client.register_plugin(StanzaPlugin::new());
28 client.register_plugin(UnhandledIqPlugin::new());
29 client.register_plugin(MessagingPlugin::new());
30 client.register_plugin(PresencePlugin::new());
31 client.register_plugin(DiscoPlugin::new("client", "bot", "en", "xmpp-rs"));
32 client.register_plugin(IbbPlugin::new());
33 client.register_plugin(PingPlugin::new());
34 client.plugin::<PingPlugin>().init();
35 client.plugin::<IbbPlugin>().init();
36 client.register_handler(Priority::Max, |e: &MessageEvent| {
37 println!("{:?}", e);
38 Propagation::Continue
39 });
40 client.plugin::<PresencePlugin>().set_presence(Type::None, Show::None, None).unwrap();
41 client.main().unwrap();
42}