--- tags: dc-bot-dev --- # DC Bot Dev ## 定位 - 掌管伺服器中的所有Bot,包括外來種以及原生種。 - 針對成員需求或是其他可帶動伺服器氛圍的功能進行開發。 ## 現在狀況 - 沒人開發(我只是過年回來弄些基本的東西) - 沒團隊(你們可以組一個) ## 團隊分工 可照專長或是經驗分組 - 程式組/測試組 - 維護環境(VPS/...) - 寫code - 數據處理 - - ... - 測試code/指令 - **傾聽成員需求/反饋** - 其他 - 想點子 - 人性化文本/對話/反應/互動 - 美術設計 ## 可能要完成/間接完成的事 - 活絡伺服器氛圍/提高活躍度 - 繼續寫懸賞題(ver.2)的功能 - 工作區的SQCS_Bot板板裡面有一些我之前寫的東西,一些重要的資訊可能都在裡面。 > [工作區邀請連結](https://trello.com/invite/sqcsbotsdevteam/f462b45e35e5e105bcc2889e4f38ff3d) ## 特別要注意的事 又稱為弄了差不多222小時的bot相關作業後的一些心得(想到甚麼就寫啥,所以會有點亂) - TOKEN和其他在.env中的東西 ***絕對不要洩漏*** > 作為掌管伺服器中各種大小事的機器人,基本上權限是全給。測試指令請在測試群中或是封閉環境中測試,確保好之後再拿到群裡開始用。發生甚麼外洩被盜bot然後被轟炸的話伺服器就掰掰。(我自己也有盜過其他人的bot並限度內刷屏作為善意的token外洩警告,所以很清楚盜token者有惡意的話可以做啥)(或是之後要對「權限全給」這件事進行修正也可以) - 弄bot請保持愉快的心情,不要只是為了弄而弄,累了就休息 - 團隊中不分階級高低,大家同等 - 有事討論,不要潛水;平常沒事也可以聊 - **要分工**,1人弄絕對會弄到死 - 學會看官方的document,或是至少對package的運作原理有點了解 - 遇到問題時,在問他人前請先上網google一下,或是去看些youtube相關影片,真的不太行就拿去問別人沒關係,不用太計較這個點 - 在此推薦「Shelter-Zone」的Discord群,可以去裡面問bot相關的問題 - 花自己可以承擔的時間成本在上面,不要荒廢其他東西 - 開發需要的權限之後有問題可以用我的gmail(darrenhsiou@gmail.com)聯絡我,開學後應該不會太碰discord - 寫些文件留給後人看 (我都沒寫) - 題外話:現在這隻機器人(Etapocsm)的命名由來 - Extendable Administrative Program of Comprehensive Server Management - Etapocsm <eta-'pok-sm> ('是重音, pok發pot把t換成k的音) - 它有新的綽號了:**聖劍** - 可能可以用個保護伺服器的專案,Discord最近有點多安全風波。(我已經有用其他人寫的SafetyAtLast™#5865來做為第一道防線了,但從今天的狀況看來他有時好像會出錯) - 如果不太清楚要弄啥的話可以去看之前的舊專案(SQCS_Bot)還有開發環境內(bot-dev)的東西。 ## 從何開始 1. 想寫Code者先學下基本的JS 2. 大家可以自行討論要各自要做甚麼 3. 由有經驗者帶領 ## Coding style (JS) * 左 `{ / [ / (` 括號不換行! * 變數:snake_case * class/type/interface:CamelCase * 其他:lowerCamelCase * 多參數或是具有optional參數的func在調用時要用dict作為輸入, ex: bad: ```javascript= function haha(a, b, c, d) { console.log(a, b, c, d); }; haha('aa', 'bb', 'cc', 'dd'); ``` good: ```javascript= function haha(obj) { console.log(obj.a, obj.b, obj.c, obj.d); }; haha({ a: 'aa', b: 'bb', c: 'cc', d: 'dd' }); ``` * 盡量使用 early return ex: ```javascript= function func(){ if (condition1) return; if (condition2) return; // some code } ``` ## Coding style (PY) * 左 `{ / [ / (` 括號不換行! ### PEP 8 ### Pycharm * 改到 `Problems` 區塊不出現錯誤提醒或警告 * 但由 `只有單個 except` 引起的錯誤如果不重要,可以忽略。 ### 命名 * [參考文章](https://medium.com/%E7%A8%8B%E5%BC%8F%E6%84%9B%E5%A5%BD%E8%80%85/%E8%AE%8A%E6%95%B8%E5%91%BD%E5%90%8D-f53cd1115076) 變數:`snake_case` 類別:`CamelCase` ### dict/json * 當作為函式的參數,且結構多於一層時,請獨立出來新定義變數,再以變數作為傳入值。 ```python # example dict_obj = { "<dict>": { "ob1", "ob2" }, "<list>": [ "ob1", "ob2" ] } JsonApi().put_json('haha', dict_obj) ``` ### 函式 如果參數量太多,請改為 `Class` 或使用`asterisk operator (*)`做參數unpacking。 ```python # example arguments = [ arg1, arg2, arg3, 71836, 189183, 'owo', '??' ] my_function(*arguments) ``` 有時候使用 `kwargs` 更佳