megabot/notplugins/example_plugin.js
megaproxy a3ed25f8dd Initial commit: Enhanced IRC bot with duck hunt game
- Added hunt/feed duck mechanics (80% hunt, 20% feed)
- Implemented persistent scoring system
- Added channel control commands (\!stopducks/\!startducks)
- Enhanced duck hunt with wrong action penalties
- Organized bot structure with botmain.js as main file
- Added comprehensive documentation (README.md)
- Included 17 plugins with various games and utilities

🦆 Duck Hunt Features:
- Hunt ducks with \!shoot/\!bang (80% of spawns)
- Feed ducks with \!feed (20% of spawns)
- Persistent scores saved to JSON
- Channel-specific controls for #bakedbeans
- Reaction time tracking and special achievements

🎮 Other Games:
- Casino games (slots, coinflip, hi-lo, scratch cards)
- Multiplayer games (pigs, zombie dice, quiplash)
- Text generation (babble, conspiracy, drunk historian)
- Interactive features (story writing, emojify, combos)

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-17 19:03:45 +00:00

73 lines
No EOL
2.3 KiB
JavaScript

// plugins/basic.js - Example plugin with basic commands
module.exports = {
// Plugin initialization
init(bot) {
console.log('Basic plugin initialized');
this.bot = bot;
},
// Plugin cleanup (called when reloading/unloading)
cleanup(bot) {
console.log('Basic plugin cleaned up');
},
// Event handlers
onMessage(data, bot) {
// This gets called for every message
// You can add custom logic here
if (data.message.includes('hello') && data.message.includes(bot.config.nick)) {
bot.say(data.replyTo, `Hello ${data.nick}!`);
}
},
// Commands that this plugin provides
commands: [
{
name: 'ping',
description: 'Responds with pong',
execute(context, bot) {
bot.say(context.replyTo, `${context.nick}: pong!`);
}
},
{
name: 'echo',
description: 'Echoes back the message',
execute(context, bot) {
if (context.args.length === 0) {
bot.say(context.replyTo, `${context.nick}: Please provide a message to echo`);
return;
}
const message = context.args.join(' ');
bot.say(context.replyTo, `${context.nick}: ${message}`);
}
},
{
name: 'help',
description: 'Shows available commands',
execute(context, bot) {
const commands = Array.from(bot.commands.keys());
bot.say(context.replyTo, `Available commands: ${commands.join(', ')}`);
}
},
{
name: 'reload',
description: 'Reloads all plugins (admin only)',
execute(context, bot) {
// Simple admin check (you can make this more sophisticated)
const adminNicks = ['admin', 'owner']; // Add your admin nicks here
if (!adminNicks.includes(context.nick)) {
bot.say(context.replyTo, `${context.nick}: Access denied`);
return;
}
bot.reloadAllPlugins();
bot.say(context.replyTo, `${context.nick}: Plugins reloaded`);
}
}
]
};