Lage en IRC-bot

Steg 1: SSH inn i VM-en

Kjør kommandoen ssh [BRUKERNAVN]@[SERVER_IP]

For eksempel: ssh nerutaa@173.30.78.234

Steg 2: Installer Python og nødvendige verktøy

1. Sjekk om Python er installert:

python3 --version

2. Hvis Python ikke er installert, kjør:

sudo apt update && sudo apt install python3 -y

3. Installer pip (Python package manager):

sudo apt install python3-pip -y

4. Installer venv-modulen for virtuelle miljøer:

sudo apt install python3.12-venv -y

(bruk riktig versjon avhengig av hva python3 --version viser)

bot 1

Steg 3: Sett opp et virtuelt miljø

1. Opprett et virtuelt miljø:

python3 -m venv ~/[BOT_NAME]-env

For eksempel: python3 -m venv ~/rulesbot-env

2. Aktiver miljøet:

source ~/[BOT_NAME]-env/bin/activate

For eksempel: source ~/rulesbot-env/bin/activate

Når miljøet er aktivert, vil terminalprompten endres slik:

([BOT_NAME]-env) user@pc:~$

3. Installer IRC-pakken:

pip install irc

Du vil trenge det for å kjøre programmet på IRC.

bot 2

Steg 4: Lag reglene

1. Gå inn i config:

nano rulesbot.py

Her skriver du de reglene du ønsker at den skal følge med på. Dette er et eksempel:

import irc.bot
import random

class RulesBot(irc.bot.SingleServerIRCBot):
    def __init__(self, channel, nickname, server, port=6667):
        super().__init__([(server, port)], nickname, nickname)
        self.channel = channel
        self.rules = [
            "Welcome to the server! Please read the rules:",
            "1. Be respectful to all users. No harassment or hate speech.",
            "2. No spamming or flooding.",
            "3. Keep content appropriate. No NSFW or offensive material.",
            "4. Follow channel-specific rules.",
            "5. Respect staff members.",
            "6. No ban evasion or exploiting features.",
            "Thanks for being cool!"
        ]
        self.bad_words = ['badword', 'dumb', 'unicorn']
        self.super_bad_words = ['dawg', 'superbadword']
        self.quote = "I bathe, therefore I exist"

    def on_welcome(self, connection, event):
        connection.join(self.channel)
        print(f"Joined {self.channel}")

    def on_pubmsg(self, connection, event):
        message = event.arguments[0].lower()
        nick = event.source.nick

        # Commands
        if message.strip() == "!rules":
            for line in self.rules:
                connection.privmsg(self.channel, line)
            return

        if message.strip() == "!quote":
            connection.privmsg(self.channel, self.quote)
            return

        if message.strip() == "!dice":
            roll = random.randint(1, 6)
            connection.privmsg(self.channel, f"{nick} rolled a dice and got: {roll}")
            return

        # Super bad word filter — kicks the user
        if any(word in message for word in self.super_bad_words):
            connection.privmsg(self.channel, f"{nick}: You used a prohibited word and will be kicked!")
            connection.kick(self.channel, nick, "No use of super bad language allowed!")
            return

        # Bad word filter — warns the user
        if any(word in message for word in self.bad_words):
            connection.privmsg(self.channel, f"{nick}: Please watch your language!")
            return


if __name__ == "__main__":
    channel = "#chatroom"      # Endre til ditt kanalnavn
    nickname = "RulesBot"      # Bot-navnet
    server = "127.0.0.1"       # Endre til riktig IRC-server IP

    bot = RulesBot(channel, nickname, server)
    bot.start()
          

2. Når du er fornøyd med reglene må du huske å lagre med Ctrl + O og enter, og så Ctrl + X for å gå ut.

Start botten

1. Nå som du er ferdig med konfigurasjonen, start botten med:

python rulesbot.py

Du vil se at det funker ved at det kommer opp at den joiner chatten, og på grunn av en melding i command promptet.

bot 3


2. Lek litt rundt med funksjonene! basert på konfigurasjonen du har gjort, vil du ha en del av commands å utføre i serveren.

Hvis vi ser på min konfigurasjon er det:

!dice for et tilfeldig nummer fra 1-6, !rules for regler som er spesifikk til det chatrommet, !quote for en quote!

Det er også chat regulering satt, som vil si at det er noen ord som man kan bli straffet for å bruke. Som et eksempel satt jeg unicorn

bot 4

3. Hvis du vil at botten skal kunne banne eller kicke må du gi den rettighetene. Dette er noe bare de som har @ ved siden av navnet sitt kan gjøre med denne kommandoen:

/mode #[CHAT_NAME] +o [BOT_NAME]

bot 5

Vi ser at det første forsøket ikke funket fordi den ikke hadde rettighetene til det.

Nyttige kommandoer

1. Stoppe botten: Trykk Ctrl + C i terminalen.

2.Deaktivere det virtuelle miljøet: Kjør deactivate når du er ferdig.

3. Starte botten på nytt: Aktiver miljøet igjen med source ~/[BOT_NAME]-env/bin/activate og kjør python3 rulesbot.py.

4. Tips: Hvis du endrer koden i rulesbot.py, må du lagre og starte botten på nytt for at endringene skal tre i kraft.

Nå er boten satt opp!

Bra jobbet! Hvis du har fulgt alle stegene, har du nå en fungerende IRC-server med en Python-bot som kjører på en Ubuntu-server i Hyper-V.