Sircbot: Difference between revisions
(style and formatting) |
(Add sending message with lua library) |
||
(One intermediate revision by the same user not shown) | |||
Line 5: | Line 5: | ||
{{Cmd|# apk add {{Pkg|sircbot}} {{Pkg|lua-sircbot}}}} | {{Cmd|# apk add {{Pkg|sircbot}} {{Pkg|lua-sircbot}}}} | ||
== Configure sircbot == | == Configure sircbot daemon == | ||
Edit the configuration file located at {{Path|/etc/conf.d/sircbot}} and change the name, server, and channel: | Edit the configuration file located at {{Path|/etc/conf.d/sircbot}} and change the name, server, and channel: | ||
Line 11: | Line 11: | ||
{{Cat|/etc/conf.d/sircbot|... | {{Cat|/etc/conf.d/sircbot|... | ||
sircbot_opts{{=}}"-n | sircbot_opts{{=}}"-n NICK -s SERVER" | ||
sircbot_channels{{=}}"#channel" | sircbot_channels{{=}}"#channel" | ||
...}} | ...}} | ||
It is the same to run sirbot directly. | |||
{{Cmd|$ sircbot -s SERVER -n NICK '#channel'}} | |||
Sircbot would act as "daemon" joining server and channels thus do the following response. | |||
== Sending messages == | |||
There are two ways to send messages, channel need be specified first in sirbot daemon. | |||
=== sircbot-send === | |||
{{Cmd|<nowiki>$ echo "$MESSAGE" | sircbot-send '#channel'</nowiki>}} | |||
=== sircbot lua library === | |||
{{Cat|lua_script|<nowiki>local sircbot = require('sircbot') | |||
local client = sircbot.connect('#channel') | |||
client:send("hello")</nowiki>}} | |||
== Create sircbot scripts folders and files == | == Create sircbot scripts folders and files == | ||
Sircbot will use an folder for the channel where is logged in. | Sircbot will use an folder for the channel where is logged in. The folder path is: {{Path|/etc/sircbot.d/#channel}} | ||
The folder path is: {{Path|/etc/sircbot.d/#channel}} | |||
For every message that goes to the channel, sircbot will run all scripts in /etc/sircbot.d/#channel/ with sender, message and channel name as arguments.[https://git-old.alpinelinux.org/hosted/sircbot/about/] | |||
== Example == | == Example == | ||
Line 100: | Line 122: | ||
== Giving life to the bot == | == Giving life to the bot == | ||
Starting | Starting sircbot daemon and adding service to boot. | ||
{{Cmd|# rc-service sircbot start && rc-update add sircbot default}} | {{Cmd|# rc-service sircbot start && rc-update add sircbot default}} |
Latest revision as of 02:29, 8 March 2024
Sircbot is a Minimalistic IRC bot based in Lua script.
Install sircbot
# apk add sircbot lua-sircbot
Configure sircbot daemon
Edit the configuration file located at /etc/conf.d/sircbot and change the name, server, and channel:
Contents of /etc/conf.d/sircbot
It is the same to run sirbot directly.
$ sircbot -s SERVER -n NICK '#channel'
Sircbot would act as "daemon" joining server and channels thus do the following response.
Sending messages
There are two ways to send messages, channel need be specified first in sirbot daemon.
sircbot-send
$ echo "$MESSAGE" | sircbot-send '#channel'
sircbot lua library
Contents of lua_script
Create sircbot scripts folders and files
Sircbot will use an folder for the channel where is logged in. The folder path is: /etc/sircbot.d/#channel
For every message that goes to the channel, sircbot will run all scripts in /etc/sircbot.d/#channel/ with sender, message and channel name as arguments.[1]
Example
Lets see an example:
Our bot will be named kumquat and we will join at the #test channel in the irc.ddd.ddd server.
Contents of /etc/conf.d/sircbot
Create folder bot.
# mkdir /etc/sircbot.d/#test -p
Create the Lua script file for our bot.
Contents of /etc/sircbot.d/#test/commands
Make the script to be executable
# chmod +x /etc/sircbot.d/#test/commands
Giving life to the bot
Starting sircbot daemon and adding service to boot.
# rc-service sircbot start && rc-update add sircbot default
Troubleshooting
If your bot is not responding as expected, an easy way to troubleshoot is to manually execute the script in /etc/sircbot.d/<#channelname>/<scriptname> with the three agruments.
$ /etc/sircbot.d/<#channelname>/<scriptname> username hi '<#channelname>'
If your bot responds as expected, then you know that your script works. The problem is that sircbot is not executing the script. Here are two likely causes:
- Sircbot is case-sensitive when looking for the channel directory for a script to execute. For example, if you have a channel named "#Alpine", sircbot will look for /etc/sircbot.d/#Alpine/*. If that pathway isn't exactly right, then sircbot will skip that folder. In our example, if you have /etc/sircbot.d/#alpine/script, sircbot will not execute anything in that folder. To fix, simply rename the folder to /etc/sircbot.d/#Alpine/
- Sircbot doesn't execute scripts that have a '.' in the name. For example a script named 'listen.lua' will not be executed. Simply rename the script to 'listen'.