IRC, Slack & Telegram bot written in Go using go-ircevent for IRC connectivity, nlopes/slack for Slack and Syfaro/telegram-bot-api for Telegram.
To see the bot in action, send a private message to go-bot on Freenode or join the channel #go-bot @ irc.freenode.org.
Type !help
in the channel or send !help
in private message.
Please see the plugins repository for a complete list of plugins.
You can also write your own, it's really simple.
To deploy your go-bot to Slack, you need to:
- Create a new bot user integration on Slack and get your token
- Import the package
github.com/go-chat-bot/bot/slack
- Import the commands you would like to use
- Call
slack.Run(token)
Here is a full example reading the Slack token from the SLACK_TOKEN
env var:
package main
import (
"os"
"github.com/go-chat-bot/bot/slack"
_ "github.com/go-chat-bot/plugins/catfacts"
_ "github.com/go-chat-bot/plugins/catgif"
_ "github.com/go-chat-bot/plugins/chucknorris"
// Import all the commands you wish to use
)
func main() {
slack.Run(os.Getenv("SLACK_TOKEN"))
}
To deploy your own go-bot to IRC, you need to:
- Import the package
github.com/go-chat-bot/bot/irc
- Import the commands you would like to use
- Fill the Config struct
- Call
irc.Run(config)
Here is a full example:
package main
import (
"github.com/go-chat-bot/bot/irc"
_ "github.com/go-chat-bot/plugins/catfacts"
_ "github.com/go-chat-bot/plugins/catgif"
_ "github.com/go-chat-bot/plugins/chucknorris"
// Import all the commands you wish to use
"os"
"strings"
)
func main() {
irc.Run(&irc.Config{
Server: os.Getenv("IRC_SERVER"),
Channels: strings.Split(os.Getenv("IRC_CHANNELS"), ","),
User: os.Getenv("IRC_USER"),
Nick: os.Getenv("IRC_NICK"),
Password: os.Getenv("IRC_PASSWORD"),
UseTLS: true,
Debug: os.Getenv("DEBUG") != "",})
}
To join channels with passwords just put the password after the channel name separated by a space:
Channels: []string{"#mychannel mypassword", "#go-bot"}
To deploy your go-bot to Telegram, you need to:
- Follow Telegram instructions to create a new bot user and get your token
- Import the package
github.com/go-chat-bot/bot/telegram
- Import the commands you would like to use
- Call
telegram.Run(token, debug)
Here is a full example reading the telegram token from the TELEGRAM_TOKEN
env var:
package main
import (
"os"
"github.com/go-chat-bot/bot/telegram"
_ "github.com/go-chat-bot/plugins/catfacts"
_ "github.com/go-chat-bot/plugins/catgif"
_ "github.com/go-chat-bot/plugins/chucknorris"
// Import all the commands you wish to use
)
func main() {
telegram.Run(os.Getenv("TELEGRAM_TOKEN"), os.Getenv("DEBUG") != "")
}
To deploy your go-bot to Rocket.chat, you need to:
- Import the package
github.com/go-chat-bot/bot/rocket
- Import the commands you would like to use
- Call
rocket.Run(config)
Here is a full example:
package main
import (
"os"
"github.com/go-chat-bot/bot/rocket"
_ "github.com/go-chat-bot/plugins/godoc"
_ "github.com/go-chat-bot/plugins/catfacts"
_ "github.com/go-chat-bot/plugins/catgif"
_ "github.com/go-chat-bot/plugins/chucknorris"
)
func main() {
config := &rocket.Config{
Server: os.Getenv("ROCKET_SERVER"),
Port: os.Getenv("ROCKET_PORT"),
User: os.Getenv("ROCKET_USER"),
Email: os.Getenv("ROCKET_EMAIL"),
Password: os.Getenv("ROCKET_PASSWORD"),
UseTLS: false,
Debug: os.Getenv("DEBUG") != "",
}
rocket.Run(config)
}
To see an example project on how to deploy your bot, please see my own configuration: