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>
This commit is contained in:
commit
a3ed25f8dd
39 changed files with 12360 additions and 0 deletions
73
notplugins/example_plugin.js
Normal file
73
notplugins/example_plugin.js
Normal file
|
|
@ -0,0 +1,73 @@
|
|||
// 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`);
|
||||
}
|
||||
}
|
||||
]
|
||||
};
|
||||
Loading…
Add table
Add a link
Reference in a new issue