//! Simple Module with a Command //! //! Adding objects through packages provides controls , //! such as moderators, and brodcasters can disable or enable mods //! //! Here, moderators or above can enable or disable the `test` //! module with the command `<prefix> disable test` //! //! Be sure the followig is defined in `.env` //! - login_name //! - access_token //! - bot_channels //! - prefix //! - bot_admins //! //! Bot access tokens be generated here - //! - Get a Bot Chat Token here - <https://twitchtokengenerator.com> //! - More Info - <https://dev.twitch.tv/docs/authentication> use forcebot_rs_v2::Bot; #[tokio::main] pub async fn main() { /* Create the bot using env */ let mut bot = Bot::new(); /* load the Module */ bot.load_module(custom_mod::new()); /* Run the bot */ bot.run().await; } pub mod custom_mod { use std::sync::Arc; use forcebot_rs_v2::{asyncfn_box, Badge, Bot, Command, Module}; use twitch_irc::message::ServerMessage; /// Module definition with a loaded command pub fn new() -> Module { /* 1. Create a new module */ let mut custom_mod = Module::new( vec!["test".to_string()], "".to_string()); /* 2. Load the cmd into a new module */ custom_mod.load_command(cmd_test()); custom_mod } /// Command definition pub fn cmd_test() -> Command { /* 1. Create a new cmd */ let mut cmd = Command::new(vec!["test".to_string()],"".to_string()); /* 2. Define exec callback */ async fn execbody(bot:Arc<Bot>,message:ServerMessage) -> Result<String,String> { if let ServerMessage::Privmsg(msg) = message { let _= bot.client.say_in_reply_to( &msg, "test return".to_string()).await; } Result::Err("Not Valid message type".to_string()) } /* 3. Set Command flags */ cmd.set_exec_fn(asyncfn_box(execbody)); cmd.set_admin_only(false); cmd.set_min_badge(Badge::Moderator); cmd } }