# 資訊之芽二階大作業 Discord Bot 說明 [toc] ## 作業檔案 * 在這裡下載:https://drive.google.com/file/d/1WmLzAQiEmR_0g0IDNK7Idrje7TgIyRq4/view ## 檔案架構 - src/ (程式碼) * `main.py` * `todo_list.py` 實作 TODO list 功能 * `guess.py` 實作猜數字功能 * `picture.py` 上傳圖片功能 * `currency.py` 爬蟲功能 (爬貨幣、匯率相關資訊) - info/ * `token.txt` 放 token * `extensions.txt` 記錄有什麼功能 - storage/ (放程式執行時產生的要儲存的檔案) ## 使用方式 1. `pip install -U discord.py` 2. 準備好一個discord bot (參考簡報) 3. 在 `token.txt` 放入你的token 4. 執行: * 打開指令列 * 移動到 `homework/src` * 輸入 `python main.py` 5. 新增 xxx 功能: 1. 在 `homework/src` 中新增一個 `xxx.py` 2. 在 `xxx.py` 中實作功能 3. 在 `info/extensions.txt` 中加上一行 `xxx` ## 作業要求 ### 一、程式 (90 pts) #### 1. 基本 (35 pts) * TODO List (25 pts) * 新增 (已完成) * 刪除 (5 pts) * 顯示 (5 pts) * 顯示時照日期排序 (5 pts) * 清空 (5 pts) * 重開時記錄還會保存 (5 pts) - 猜數字 (10 pts) * 隨機產生不含0且沒有數字重複的四位數 (2 pts) * 猜了會回應幾A幾B、猜對會結束 (6 pts) * 使用者不想玩了可以跳出 (2 pts) #### 2. 自訂功能 (45 pts) * 一個功能15分,每個功能至少有**三個指令**或是**超過60行程式** * 至少有一個功能要用到**爬蟲**,一個功能要用到**圖片**(可以是同一個功能) * 可以參考原本提供的範例 (`picture.py`, `currency.py`, `weather.py`, `covid.py`) ,但沒有修改的話就不算 #### 3. 其他 (10 pts) * coding style * 使用者友善程度(例如實作 help) * 防呆機制(若使用者輸入錯誤,程式不會直接爛掉) ### 二、文字說明 (10 pts) 請你使用 Word 等文件編輯器編寫,再儲存成「report.pdf」,一同放進上傳的壓縮檔中。 * 程式檔案架構 (1 pt) * 請你簡單說明每個檔案分別在實作哪些功能 * 列出程式中總共 import 了哪些 module (1 pt) * 除了 `main.py` 裡面的`discord`、`os`之外都必須列出 * 指令及功能介紹 (8 pts) * 對每個 extension 請詳述它的功能、使用方式 * 需要說明使用者要輸入的內容或參數、預期程式回傳的內容 :::spoiler **參考範例如下(請點此)** > 程式檔案架構 > ---------- > - `src/guess.py`: 猜數字遊戲 > - `src/todo_list.py`: TODO list (待辦清單) > - `src/picture.py` : 圖片上傳 > - `src/currency.py` : 外匯匯率 > - `src/weather.py` : 衛星雲圖 > - `src/covid.py` : COVID-19 人數統計 > > 使用的模組 > -------- > - io, os, re, random, csv, datetime > - pickle, requests, bs4, discord > > 指令及功能介紹 > ----------- > > ### guess: 猜數字 > * 使用者可以進行猜數字遊戲 > * 遊戲規則:使用者可以猜一個由不重複 1-9 組成的四位數字,猜對會回應幾A幾B,代表: > * A - 猜對數字及位置 > * B - 猜對數字但位置錯誤 > * 輸入指令 `$guess` 開始遊戲,之後直接輸入所猜的數字 > * 隨時輸入 `quit` 可結束遊戲 > > > ### todo_list: 待辦清單 > * 一個方便好用的待辦清單 > * 四種功能的指令: > * 新增 - `$add <date> <label> <item>` > * 依照參數新增一個新的待辦事項到清單上 > * `date` 代表 `月/日` 的日期,如 `06/24` > * `label` 代表該待辦事項的標籤,可以作為分類使用 > * `item` 代表該待辦事項的文字,不限長度 > * 消除 - `$done <date> <label> <item>` > * 把一個待辦事項消除(標示為已完成) > * 輸入參數同 `$add` > * 顯示 - `$show [label]` > * 列出所有目前的待辦事項,會貼心地依照日期排序 > * 可以輸入參數 `label` 代表只顯示指定 label 內的待辦事項 > * 清除 - `$clear` > * 清除所有待辦清單上的事項 > * 可能適用於一次完成所有事情或要重新安排時間的情況 > > > ### picture: 圖片上傳 > * 給使用者上傳圖片,儲存之後提供下載 > * 上傳圖片在並送出時輸入指令 `$upload` 可以上傳 > * 輸入指令 `$show_pic` 就會秀出圖片給使用者 > > > ### currency: 外匯匯率 > * 抓取[玉山銀行網頁](https://www.esunbank.com.tw/bank/personal/deposit/rate/forex/foreign-exchange-rates)的外國貨幣即時匯率資料 > * 依照貨幣別,每個貨幣會有「即期匯率」、「網路銀行/App優惠匯率」、「現金匯率」等匯率類別,每種匯率再分成「買入」跟「賣出」兩種價格。 > * 可用指令: > * `$all_rates` - 一次列出所有貨幣的全部匯率 > * `$curr_list` - 列出所有可以查詢的貨幣名稱及代號 > * `$rates <cur>` - 顯示單一貨幣的匯率 > * `cur` 代表選定的匯率代號,可以用 `$curr_list` 查詢。 > > ### weather: 衛星雲圖 > * 從中央氣象局網頁抓取 24 小時內的衛星雲圖 > * 輸入指令 `$weather` 可以顯示最新一筆 > * 可以增加參數來調整時間: > 以 `$weather [H] [M]` 查詢指定時、分的衛星雲圖 > * `H` 代表 24 時制的幾點,`M` 代表幾分 > * 貼心提醒:分鐘數會無條件捨去到以 10 分鐘整為單位。 > 如果該時間還沒有衛星雲圖發布,有可能會顯示前一天的。 > > > ### covid: COVID-19 統計資訊 > * 從疾管署資料 API 抓取最新的 COVID-19 人數統計資訊 > * 包括總確診、解除隔離、死亡、送驗、排除人數 > * 以及昨日確診、昨日送驗、昨日排除 > * 輸入指令 `$covid` 抓取並顯示統計資料 ::: ## 作業繳交 1. 繳交方式: * 文字說明請命名為`report.pdf`,放在 `homework` 資料夾中 * 把整個 `homework` 資料夾壓縮成 zip 上傳到表單 * 繳交檔案時記得把 token 刪掉喔~ * Google表單:https://forms.gle/aFR3X5VUDkMooD3R8 2. 完成期限:7/4,不接受遲交。 * 如果多次繳交則以期限內最後一次上傳為主 4. **請勿互相抄襲**,可以跟同學討論,但討論完以後請自己寫。
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up