## 資訊之芽 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
如果使用者想要移除掉不存在的待辦事項,需要提示錯誤訊息
:::

```
$SortTodoList
```
將 todo list 按照字典序排序並輸出
```
$ClearTodoList
```
清空 todo list

----
### Wordle Example
```
$Play
```
爬網路上的單字資料庫,並 random 選一個單字設為答案
:::info
不可讀取本機檔案
:::
```
$Ask ans
```
詢問單字是否正確
:::info
要注意一些情況
* 問超過6次要停
* 問不是5個單字的字母
* 問不是單字的字母組合
:::
為了方便實作,Ask response 可以輸出
* 大寫 = 位置對字母也對
* 小寫 = 字母對但位置不對
* \# = 都不對
正確答案 : right
Ask : input
輸出 : i###T

