Jaken - A general purpose IRC bot featuring user acls and arbitrary plugins

Design principles

This bot is based on the premise of a loosely coupling between the bot and its plugins, so that plugin development can be made more easily. It does this by assuming that plugins are standalone binaries that can be executed. The second premise is that there needs to be a fine-grained ACL mechanism. This is done with roles applied to plugins.

Access control

This bot features fine-grained RBAC with a command-level granularity. Every command can be bound to a role, and users can get permissions per role. By default, this works on the command level, but it is possible to bind multiple commands to a single role. During intialization of the bot, one default role is created for admin users and and the user management commands are bound to this role.

Built-in commands

In order to make the bot work, it includes several commands by itself, a list of these can be found below

whoami

Display how you are recognized by the bot. Syntax is whoami.

test

Test if you can talk with the bot. Syntax is test

help

Get some info to get you started. Syntax is help

commands

List all available commands. Syntax is help

meet

Introduce a new user to the bot. Syntax is meet <nickname>. This will cause the bot to perform a whois lookup for this user, and store the corresponding hostmask into the database

forget

Remove a user from the bot. Syntax is forget <nickname>. This will delete all hostmasks of users matching the nickname.

add-role

Define a new role. Syntax is add-role <role>.

del-role

Remove a role. Syntax is del-role <role>

list-roles

List all available roles. Syntax is list-roles

add-perm

Grants a user permission to a role. Syntax is add-perm <nickname> <role>

del-perm

Revokes a permission from a user. Syntax is del-perm <nickname> <role>

list-perms

List all roles for a user. Syntax is list-perms [<nickname>]. By default the permissions for the calling user will be shown. By specifying <nickname> you can lookup the permissions for another user.

Plugin development guidelines

Plugins should be designed such that they can both run standalone (ie, from the commandline) as well as being able to run from inside the bot. The bot will take the filename of the script, minus the extension, to create the IRC command. Because of this, the plugins need to adhere to the following rules:

  • Filename must be a single word and can optionally have an extension
  • Incoming arguments to the plugins must be set via argv
  • Replies to the bot need to be sent to stdout

By default, the command is bound to a role with the same name as the command. This can be overriden by prepending the filename of the command with <role name>_. This role identifier (including the underscore) will be removed from the IRC command.

Upcoming features

  • Additional information passing to plugins
  • karma/infoitems, in-bot or not
  • Possibility to reply via notifications
  • Port some plugins
  • Alias support
  • Endpoint for incoming irc messages
  • Make bot configurable via cfg file and cli arguments
  • Find something for triggers (eg, !remind, leaving messages for ppl)
  • Possibility to create plugins which run continuously and communicate via stdin/stdout
  • sqlite3 -> add transactions and concurrency limits
  • Possibility to join multiple channels
Owner
Lex van Roon
SRE by day, hacker by night
Lex van Roon
Similar Resources

A discord bot which can show content added by guild user.

Segb This is a discord bot based on discordgo. Main Features Manage uploaded GIFs by storing their URLs and tags in a google spreadsheet Actually, oth

Nov 23, 2021

Sex-bot - The sex bot and its uncreative responses

Sex-bot - The sex bot and its uncreative responses

Sex Bot The sex bot, made with golang! The sex bot can't hear the word "sexo" he

Nov 11, 2022

Dlercloud-telegram-bot - A Telegram bot for managing your Dler Cloud account

Dler Cloud Telegram Bot A Telegram bot for managing your Dler Cloud account. Usa

Dec 30, 2021

Quote-bot - Un bot utilisant l'API Twitter pour tweeter une citation par jour sur la programmation et les mathématiques.

Description Ceci est un simple bot programmé en Golang qui tweet une citation sur la programmation tout les jours. Ce bot est host sur le compte Twitt

Jan 1, 2022

Discord-bot - A Discord bot with golang

JS discord bots Install Clone repo git clone https://github.com/fu-js/discord-bo

Aug 2, 2022

Bot - Telegram Music Bot in Go

Telegram Music Bot in Go An example bot using gotgcalls. Setup Install the serve

Jun 28, 2022

Pro-bot - A telegram bot to play around with the community telegram channels

pro-bot 🤖 Pro Bot A Telegram Bot to Play Around With The Community Telegram Cha

Jan 24, 2022

Slack-emoji-bot - This Slack bot will post the newly created custom Slack emojis to the channel of your choice

Slack Emoji Bot This Slack bot will post the newly created custom Slack emojis t

Oct 21, 2022

Feline-bot - Feline Bot for Discord using Golang

Feline Bot for Discord Development This bot is implemented using Golang. Feature

Feb 10, 2022
Related tags
IRC, Slack, Telegram and RocketChat bot written in go
IRC, Slack, Telegram and RocketChat bot written in go

go-bot IRC, Slack & Telegram bot written in Go using go-ircevent for IRC connectivity, nlopes/slack for Slack and Syfaro/telegram-bot-api for Telegram

Dec 20, 2022
IRC bot for launch ddos attack, Mainly of scan target are IoT device that run linux and open default SSH port
IRC bot for launch ddos attack, Mainly of scan target are IoT device that run linux and open default SSH port

This is my first IRC bot for launch ddos attack, Mainly of scan target are IoT device that run linux and open default SSH port, This bot is write on Go language. For education purpose only. Please test it in your lab. And i create this for join university in the future not for attack anyone server with out any permission!!!

Jan 2, 2023
The Tenyks IRC bot.

Tenyks is a computer program designed to relay messages between connections to IRC networks and custom built services written in any number of languages.

Sep 26, 2022
This is my first IRC bot for launch ddos attack, Write on Go language.
This is my first IRC bot for launch ddos attack, Write on Go language.

This is my first IRC bot for launch ddos attack, Write on Go language. For education purpose only. Please test it on your lab, And i create this for join university in the future not for attack anyone server with out any permission!!!

Sep 23, 2022
A bot based on Telegram Bot API written in Golang allows users to download public Instagram photos, videos, and albums without receiving the user's credentials.

InstagramRobot InstagramRobot is a bot based on Telegram Bot API written in Golang that allows users to download public Instagram photos, videos, and

Dec 16, 2021
Bot-template - A simple bot template for creating a bot which includes a config, postgresql database

bot-template This is a simple bot template for creating a bot which includes a c

Sep 9, 2022
go irc client for twitch.tv

go-twitch-irc This is an irc client for connecting to twitch. It handles the annoying stuff like irc tag parsing. I highly recommend reading the docum

Dec 27, 2022
A modern IRC server (daemon/ircd) written in Go.
A modern IRC server (daemon/ircd) written in Go.

Oragono is a modern IRC server written in Go. Its core design principles are: Being simple to set up and use Combining the features of an ircd, a serv

Dec 31, 2022
Library for working with golang telegram client + bot based on tdlib. This library was taken from the user Arman92 and changed for the current version of tdlib.

go-tdlib Golang Telegram TdLib JSON bindings Install To install, you need to run inside a docker container (it is given below) go get -u github.com/ka

Dec 2, 2022
This repository will guide you to steal whatever the user copies and send content to telegram bot.

copy-clipboard-stealer-with-telegram This repository will guide you to steal whatever the user copies and send content to telegram bot. Setting Envior

Oct 4, 2022