Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import os
- import signal
- import subprocess
- import irc.client
- import time
- import socket
- def check_socket(host, port):
- with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
- return s.connect_ex((host, port)) == 0
- def on_connect(connection, event):
- print(f"Connected to {event.target}")
- connection.join("#main")
- def on_join(connection, event):
- print(f"Joined {event.target}")
- connection.privmsg(event.target, "Hi, I am AnirudhGPT! How can I assist you today?")
- def on_message(connection, event):
- print(f"Received message: {event.arguments[0]}")
- msg = event.arguments[0].lower()
- user_who_pinged = event.source.nick
- # Checking for bot's dynamic nickname in the message to consider it a "ping"
- if connection.get_nickname().lower() in msg:
- connection.privmsg(event.target, f"I'm AnirudhGPT {user_who_pinged}!")
- def main():
- server = "127.0.0.1"
- port = 7000
- nickname = "anirudhgpt"
- # Start websocat as a subprocess and suppress its output
- subprocess.Popen(
- ["websocat", "tcp-listen:127.0.0.1:7000", "wss://irc.amcforum.wiki/webirc/websocket/", "--exit-on-eof", "-H", "Origin: https://native-clients.solanum.repl", "-v"],
- stdout=subprocess.PIPE,
- stderr=subprocess.PIPE
- )
- # Wait for websocat to be ready
- while not check_socket(server, port):
- print("Waiting for websocat to be available...")
- time.sleep(1)
- print("Websocat is ready. Starting IRC bot.")
- reactor = irc.client.Reactor()
- try:
- connection = reactor.server().connect(server, port, nickname)
- except irc.client.ServerConnectionError as e:
- print(f"Could not connect: {e}")
- return
- connection.add_global_handler("welcome", on_connect)
- connection.add_global_handler("join", on_join)
- connection.add_global_handler("pubmsg", on_message)
- reactor.process_forever()
- if __name__ == "__main__":
- main()
Advertisement
Add Comment
Please, Sign In to add comment