Luminarys / Kaguya
Licence: isc
A small, powerful, and modular IRC bot
Stars: ✭ 71
Programming Languages
elixir
2628 projects
Labels
Projects that are alternatives of or similar to Kaguya
Warren
🐇 Kotlin/JVM, tested, IRC v3.2 client state management and observing
Stars: ✭ 8 (-88.73%)
Mutual labels: irc
Progress Bot
High-tech weaponized moe progress delivery bot for IRC, Discord, and web
Stars: ✭ 38 (-46.48%)
Mutual labels: irc
Irc Colors.js
Color and formatting for irc bots made easy. Inspired by colors.js and cli-color.
Stars: ✭ 26 (-63.38%)
Mutual labels: irc
Hammerspoon
Staggeringly powerful macOS desktop automation with Lua
Stars: ✭ 8,540 (+11928.17%)
Mutual labels: irc
Juno
a seriously modern IRC daemon written from scratch in Perl. designed to be ridiculously extensible, painlessly reloadable, and excessively configurable
Stars: ✭ 12 (-83.1%)
Mutual labels: irc
Java Twirk
Small, basic library for communication via the Twitch chat. Java 8 compatible
Stars: ✭ 36 (-49.3%)
Mutual labels: irc
Charla
A IRC Server / Daemon written in Python using the circuits Application Framework.
Stars: ✭ 8 (-88.73%)
Mutual labels: irc
Honeybot
🛩 A python IRC bot with simple plugins dev. Ignited in mauritius, first-timers friendly!
Stars: ✭ 48 (-32.39%)
Mutual labels: irc
Kaguya
A small but powerful IRC bot
Installation
- Add kaguya to your list of dependencies in
mix.exs
:
def deps do
[{:kaguya, "~> x.y.z"}]
end
-
Run
mix deps.get
-
Ensure kaguya is started before your application:
def application do
[applications: [:kaguya]]
end
- Configure kaguya in config.exs:
config :kaguya,
server: "my.irc.server",
port: 6666,
bot_name: "kaguya",
channels: ["#kaguya"]
Usage
By default Kaguya won't do much. This is an example of a module which will perform a few simple commands:
defmodule Kaguya.Module.Simple do
use Kaguya.Module, "simple"
handle "PRIVMSG" do
match ["!ping", "!p"], :pingHandler
match "hi", :hiHandler
match "!say ~message", :sayHandler
end
defh pingHandler, do: reply "pong!"
defh hiHandler(%{user: %{nick: nick}}), do: reply "hi #{nick}!"
defh sayHandler(%{"message" => response}), do: reply response
end
This module defines four commands to be handled:
-
!ping
and!p
are aliased to the same handler, which has the bot respondpong!
. -
hi
will cause the bot to reply saying "hi" with the persons' nick -
!say [some message]
will have the bot echo the message the user gave.
The handler macro can accept up to two different parameters, a map which destructures a message struct, and a map which destructures a match from a command.
You can find a more full featured example in example/basic.ex
.
Configuration
-
server
- Hostname or IP address to connect with. String. -
server_ip_type
- IP version to use. Can be eitherinet
orinet6
-
port
- Port to connect on. Integer. -
bot_name
- Name to use by bot. String. -
channels
- List of channels to join. Format:#<name>
. List -
help_cmd
- Specifies command to act as help. Defaults to.help
. String -
use_ssl
- Specifies whether to use SSL or not. Boolean -
reconnect_interval
- Interval for reconnection in ms. Integer. Not used. -
server_timeout
- Timeout(ms) that determines when server gets disconnected. Integer. When omitted Kaguya does not verifies connectivity with server. It is recommended to set at least few minutes.
Note that the project description data, including the texts, logos, images, and/or trademarks,
for each open source project belongs to its rightful owner.
If you wish to add or remove any projects, please contact us at [email protected].