mirror-bot.py 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. # -*- coding: utf-8 -*-
  2. import irc
  3. import argparse
  4. # parse arguments
  5. parser = argparse.ArgumentParser(description='IRC bot to mirror msgs from a server to another')
  6. parser.add_argument('--server-from',default='127.0.0.1', help='First IRC server')
  7. parser.add_argument('--port-from', default=22024, type=int, help='port of the first IRC server')
  8. parser.add_argument('--server-to',default='127.0.0.1', help='Second IRC server')
  9. parser.add_argument('--port-to', default=22028, type=int, help='port of the second IRC server')
  10. parser.add_argument('--channels',
  11. default=["#dev", "#memes", "#philosophy", "#markets", "#math", "#random", "#test"],
  12. nargs='+', help='channels to join')
  13. parser.add_argument('--nickname', default="mirror-bot", help='bot nickname in IRC')
  14. args = parser.parse_args()
  15. botnick = args.nickname
  16. ## Server 1
  17. darkirc_server = args.server_from
  18. darkirc_port = args.port_from
  19. darkirc_channels = args.channels
  20. darkirc = irc.IRC()
  21. darkirc.connect(darkirc_server, darkirc_port, darkirc_channels, botnick)
  22. ## Server 2
  23. ircd_server = args.server_to
  24. ircd_port = args.port_to
  25. ircd_channels = args.channels
  26. ircd = irc.IRC()
  27. ircd.connect(ircd_server, ircd_port, ircd_channels, botnick)
  28. while True:
  29. darkirc_text = darkirc.get_response()
  30. if not len(darkirc_text) > 0:
  31. continue
  32. print(darkirc_text)
  33. text_list = darkirc_text.split(' ')
  34. command = text_list[1]
  35. nick_handle = text_list[0]
  36. if command == "PRIVMSG":
  37. nickname = nick_handle[nick_handle.find(':')+1 : nick_handle.find('!')]
  38. channel = text_list[2]
  39. msg = ' '.join(text_list[3:])
  40. message = msg[msg.find(':')+1:].rstrip()
  41. ircd.send(channel, f"<{nickname}>: {message}")