## 資訊之芽 py 班 第二次大作業 ## Code a Discord Bot ### Project Template [Click Here](https://github.com/EnzoHuang0807/discord_bot_tutorial) 可以直接把專案下載下來,也可以用上禮拜教過的 git 先 fork 這個專案再把它 clone 下來 --- ### Requirements * 自己實作一個Discord的機器人 * 還要自己設計一些小小的內容 * 最後要寫一份報告介紹你的設計 (形式不拘) ---- ### 這個機器人要有的功能 * 使用者自建 Todo List * 玩 Wordle * 自訂功能一 * 自訂功能二 ### 指令的呈現方式 包含但不限於文字輸入和點擊按鈕 ---- ### Todo List (20%) * 新增一個待辨事項 (4%) * 刪除一個待辨事項 (4%) * 清空所有待辨事項 (4%) * 排序並輸出所有待辨事項 (4%) * 可依照任何你喜歡的排序 ex: 日期、重要度、字典序等 * 美觀的介面 (使用 Embed 或 Button) (4%) ---- ### Wordle (20%) * 爬[單字資料庫](https://www.wordunscrambler.net/word-list/wordle-word-list),並隨機選取一個單字 (5%) * 根據輸入給出回應,遊戲結束時要公布答案 (10%) * 美觀的介面 (使用 Embed 或 Button) (5%) 試玩 : [Link](https://www.nytimes.com/games/wordle/index.html) ---- ### 自訂功能一 (20%) * 指令一 (5%) * 指令二 (5%) * 指令三 (5%) * 美觀的介面 (使用 Embed 或 Button) (5%) ---- ### 自訂功能二 (20%) * 指令一 (5%) * 指令二 (5%) * 指令三 (5%) * 美觀的介面 (使用 Embed 或 Button) (5%) ---- ### 給個例子 - 玩1A2B * 開始玩 * 猜一個數字 * 結束時輸出猜測次數與排名 例子出來了,不能寫1A2B 當然如果你想要有超過三個指令也行 只是多的沒有分數,但能讓你的bot更完整 ---- ### Coding Style (0%) Coding Style 不計分,但有好的 Coding Style 可以讓你的組員更容易讀懂你的程式 * 優質易懂的變數名稱 * 詳細的註解 * 用函數or其他方法包裝功能 * PEP8 * Error Handling ---- ### Report (10%) * 解釋你的專案架構(5%) (有哪些檔案、各代表什麼) * 解釋你如何實作的 (5%) (尤其是自訂功能的部分) :::warning 請額外標註 * 每位成員負責的部分 * 每位組員的貢獻度 (全部組員合計貢獻度=10) 若貢獻度太低會斟酌扣分 ::: ---- ### 上臺分享 (10%) * 每個組員都要上台 * 講師們評分(10%) ---- ### Bonus - Music Bot (20%) 幫一個有基本架構的music bot加上功能 1. 讓使用者能夠透過樂曲名稱搜尋音樂 (5%) 2. 管理待播放清單 (10%) * 加入歌曲 * 插歌 * 移除指定歌曲 * 列出清單 * 清空清單 4. 美觀的介面 (使用 embed 或 button) (5%) ---- ### 滿分 : 120% ---- ### 可以找朋朋~ [分組表單](https://docs.google.com/forms/d/e/1FAIpQLSeNLShhQ6lqd9rV1WZrPGLoe2Yyb0PtspfQfURiZ1lC7n-lrA/viewform) * 請在 5/19 23:59 前填寫完畢 * **1~3 人一組** ---- ### DeadLine : 6/23 23:59 [繳交連結](https://docs.google.com/forms/d/e/1FAIpQLSeTmFYlxqJTPzPH8M-fDofV3FJ9uAakY8PWxIlN_zwiUFHkDw/viewform) 大家加油 ---- ### Todo List Example :::info 以下的作法只是範例,不用完全相同 但藍框框內的需求若沒有做到會斟酌扣分 ::: ``` $AddTodoList item ``` 將 item(待辨事項) 加入 todo list ``` $RemoveTodoList item ``` 將 item(待辨事項) 移除 todo list :::info 如果使用者想要移除掉不存在的待辦事項,需要提示錯誤訊息 ::: ![](https://hackmd.io/_uploads/HJ8xq_YVn.png =450x250) ``` $SortTodoList ``` 將 todo list 按照字典序排序並輸出 ``` $ClearTodoList ``` 清空 todo list ![](https://hackmd.io/_uploads/BJ-lodFVn.png =300x320) ---- ### Wordle Example ``` $Play ``` 爬網路上的單字資料庫,並 random 選一個單字設為答案 :::info 不可讀取本機檔案 ::: ``` $Ask ans ``` 詢問單字是否正確 :::info 要注意一些情況 * 問超過6次要停 * 問不是5個單字的字母 * 問不是單字的字母組合 ::: 為了方便實作,Ask response 可以輸出 * 大寫 = 位置對字母也對 * 小寫 = 字母對但位置不對 * \# = 都不對 正確答案 : right Ask : input 輸出 : i###T ![](https://hackmd.io/_uploads/rJJZC9F43.png =300x360) ![](https://hackmd.io/_uploads/HyAWJit4n.png =270x400)