IRC Bot (Najosnovnija verzija)
#1
IRC Bot

Ovde ću navesti i demonstrirati kako radi irc bot na raspberry pi-u

Prvi korak je kreiranje direktorijuma u /home/korisnik/ folderu

Code:
cd /home/korisnik/
mkdir bot
cd bot
pwd
/home/korisnik/bot

Napomena: bot.py ne sme biti u istom folderu gde je socket.py (Izazvaće sukob)

Nakon toga kreirajte sa vi, vim ili nano skriptu u bot folderu. Znači pravimo baš najosnovniju verziju bota u Python programskom jeziku.

Code:
nano bot.py


Skripta (bot.py) bi trebala da izgleda ovako:

Code:
import socket
import random
import time

server = "localhost"
port = 6667
nickname = "Bot3"
channel = "#test"

irc = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
irc.connect((server, port))
irc.send(("USER " + nickname + " " + nickname + " " + nickname + " :Python IRC\r\n").encode("UTF-8"))
irc.send(("NICK " + nickname + "\r\n").encode("UTF-8"))
irc.send(("JOIN " + channel + "\r\n").encode("UTF-8"))

def send_message(message):
    """Send a message to the IRC channel."""
    irc.send(("PRIVMSG " + channel + " :" + message + "\r\n").encode("UTF-8"))

while True:
    message = irc.recv(2048).decode("UTF-8")
    if message.find("PING") != -1:
        irc.send(("PONG " + message.split()[1] + "\r\n").encode("UTF-8"))
    if message.find(":!hello") != -1:
        send_message("Hello there!")
    if message.find(":!time") != -1:
        current_time = time.strftime("%H:%M:%S", time.gmtime())
        send_message("The current time is " + current_time)
    if message.find(":!roll") != -1:
        send_message("Rolling the dice...")
    if message.find(":!medved") != -1:
        send_message("Medvedima pristup zabranjen...")

Ovaj kod je open source i možete ga koristiti ili unapređivati. Izvor mu je na githubu:
https://github.com/antistereotip/node-fs...ster/ai.py

Nakon toga instalirate irc klijenta irssi:

Code:
sudo apt install irssi

Potrebna su nam dva terminala (tty), u jednom će biti potrebna pokrenuta skripta bot.py a u drugom irssi klijent.

Code:
pwd
/home/korisnik/bot/
ls
pi@raspberrypi:~/bot $ ls
bot.py

Sada je potrebno da pokrenete bota:

Code:
python bot.py

On će se pokrenuti i ućiće u #test sobu pod imenom Bot

Pre svega ovoga neophodno je da imamo aktivan irc server. U ovom slučaju to je ngircd. U drugoj temi ću obraditi instalaciju ngircd servera.

Zatim je potrebno sa drugog terminala ući u irssi klijent.

Code:
irssi

https://github.com/antistereotip/node-fs...ter/ai.txt

Zatim komandu kojom ćete ući u server i u sobu. Kad uđem u sobu promeniću nick u hightech.

Code:
/connect localhost
/join #test
/nick hightech

Ili možete koristiti GUI irc klijenta IceChat na Windowsu:

SLIKA

Zatim ćemo zadati komandu !high i dobiti output.

Code:
!high


Output:

Code:
Medvedima pristup zabranjen.


To bi bilo to, najkraća i najjednostavnija verzija irc bota.



!high
!hello


Evo i verzije u PHP-u

Code:
<?php

$server = 'localhost';
$port = 6667;
$nickname = 'bot3php';
$channel = '#test';

$socket = fsockopen($server, $port);
fwrite($socket, 'USER ' . $nickname . ' ' . $nickname . ' ' . $nickname . ' :PHP IRC' . "\r\n");
fwrite($socket, 'NICK ' . $nickname . "\r\n");
fwrite($socket, 'JOIN ' . $channel . "\r\n");

while (true) {
    $data = fgets($socket, 1024);
    echo $data; // Echo data for debugging purposes

    if (strpos($data, 'PING') !== false) {
        fwrite($socket, 'PONG ' . substr($data, strpos($data, ':') + 1) . "\r\n");
    }

    if (strpos($data, ':!hello') !== false) {
        $sender = explode('!', $data)[0];
        $response = 'Hello, ' . substr($sender, 1) . '!';
        fwrite($socket, 'PRIVMSG ' . $channel . ' :' . $response . "\r\n");
    }

    if (strpos($data, ':!medved') !== false) {
        fwrite($socket, 'PRIVMSG ' . $channel . ' :Medvedima pristup zabranjen!' . "\r\n");
    }

}

fclose($socket);

Kako radi, otvoriti terminal i kucati ?
Code:
php bot3php.php
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)