79 lines
No EOL
2 KiB
Rust
79 lines
No EOL
2 KiB
Rust
//! 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
|
|
}
|
|
} |