| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- # -*- coding: utf-8 -*-
- import signal
- import irc
- import argparse
- # parse arguments
- parser = argparse.ArgumentParser(description='IRC bot to mirror msgs from a server to another')
- parser.add_argument('--server-from',default='127.0.0.1', help='First IRC server')
- parser.add_argument('--port-from', default=22024, type=int, help='port of the first IRC server')
- parser.add_argument('--server-to',default='127.0.0.1', help='Second IRC server')
- parser.add_argument('--port-to', default=22028, type=int, help='port of the second IRC server')
- parser.add_argument('--channels',
- default=["#dev", "#memes", "#philosophy", "#markets", "#math", "#random", "#test"],
- nargs='+', help='channels to join')
- parser.add_argument('--nickname', default="mirror-bot", help='bot nickname in IRC')
- args = parser.parse_args()
- botnick = args.nickname
- ## Server 1
- darkirc_server = args.server_from
- darkirc_port = args.port_from
- darkirc_channels = args.channels
- darkirc = irc.IRC()
- darkirc.connect(darkirc_server, darkirc_port, darkirc_channels, botnick)
- ## Server 2
- ircd_server = args.server_to
- ircd_port = args.port_to
- ircd_channels = args.channels
- ircd = irc.IRC()
- ircd.connect(ircd_server, ircd_port, ircd_channels, botnick)
- def signal_handler(sig, frame):
- print("Caught termination signal, cleaning up and exiting...")
- ircd.disconnect(args.server_to, args.port_to)
- darkirc.disconnect(args.server_from, args.port_from)
- print("Shut down successfully")
- exit(0)
- signal.signal(signal.SIGINT, signal_handler)
- while True:
- darkirc_text = darkirc.get_response()
- if not len(darkirc_text.strip()) > 0:
- continue
-
- print(darkirc_text)
- text_list = darkirc_text.split(' ')
- command = text_list[1]
- nick_handle = text_list[0]
- if command == "PRIVMSG":
- nickname = nick_handle[nick_handle.find(':')+1 : nick_handle.find('!')]
- channel = text_list[2]
- msg = ' '.join(text_list[3:])
- message = msg[msg.find(':')+1:].rstrip()
-
- ircd.send(channel, f"<{nickname}>: {message}")
|