This is a simple, small, and easy to configure golang bot for connecting and bidirectionally syncing a single IRC channel's topic to the topic of a single Discord channel.
Any topic updates in those channels will be synced with the other nearly instantly and a topic change alert will be posted in Discord to mirror the alert normally shown in IRC.
It was made to compliment an existing kubernetes cluster of chat and site services for an independent game streaming community spread out over two chat networks. Since matterbridge doesn't support topic syncing for the time being, this was developed to fill in the feature gap.
If there is demand, this project could be extended to support multiple channels, networks, or other configuration needs so feel free to request a feature!
To get a local copy compiled and running follow these simple steps.
- A working Go install with a functional GOPATH
- A Q/Nickserv account registered for the bot with auto-op/half-op set for its account in the desired IRC channel
- Lastly, a bot account must be created in Discord and added to your Discord server with the Manage Channels permission (to be able to edit the topic)
Download the latest code into your Go directory:
cd $GOPATH
go get github.com/CoordSpace/topicsync
Once that's done, you should have a compiled binary in your /bin directory all ready to go!
Now open up a new yaml file called config.yaml
and paste the contents of the config-sample.yaml
file from this repo into it and edit to meet your needs.
The edited config.yaml
file must be stored in one of three valid directories in order for this program to find and use it:
/etc/topicsync/
$HOME/.topicsync
./
(The same directory as the binary)
---
irc:
server: irc.coolnetwork.chat
port: 6667
user: TopicBot
nick: TopicBot
name: A Topic Sync Bot
# IRC channel to join (e.g. '#TopicBotTest')
channel: '#CoolChatroom'
# Optional - Bot name and command to auth with IRC services
auth:
bot: [email protected]
cmd: IDENTIFY foo password
discord:
token: 'a-big-string-from-the-discord-dev-portal-bot-settings'
# The ID of the channel to track, found using discord dev-mode
# and right-clicking on the channel
channelID: '38104041843693923425'
# Topic update message formatting string for Discord
# [Emoji] Topic Updated: [This is the topic message.]
updateFormat: "%s Topic Updated: %s"
# Optional - Random Emojis for added topic update flair in Discord
emojis:
- ⚠️
- 🔔
...
Lastly, just run the binary. It will automatically find your config file and start connecting to the servers and channels of your choice. By default, the existing channel topics in the pair will not sync immediately upon joining. So issue a new topic on either side to get the process started.
A hyper-minimal, statically-linked Docker image is also available for fast integration into existing containerized stacks.
Just create your local config.yaml
configuration from the repo's sample template and mount it to the latest Docker build with:
docker run -ti -v /path/to/config.yaml:/etc/topicsync/config.yaml coordspace/topicsync
See the open issues for a list of proposed features (and known issues).
Contributions are what make the open source community such an amazing place to be learn, inspire, and create. Any contributions you make are greatly appreciated.
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature
) - Commit your Changes (
git commit -m 'Add some AmazingFeature'
) - Push to the Branch (
git push origin feature/AmazingFeature
) - Open a Pull Request
Distributed under the MIT License. See LICENSE
for more information.
Chris Earley - @CoordSpace - [email protected]
Project Link: https://github.com/CoordSpace/topicsync