--- title: TeamA「Discord 機器人投票抽籤功能」專案企劃書 tags: proposal, project, DiscordBot description: 1. title 請改為 [專案名稱]企劃書 2. tag 請刪去template,加上專案內容類型或名稱 3. 下方會議記錄請使用會議記錄範本 4. 加上"{%hackmd BkVfcTxlQ %}"意為套用黑色模板 --- {%hackmd BkVfcTxlQ %} # ***TeamA「Discord 機器人投票抽籤功能」企劃書*** :::info > 專案負責人聯絡資訊: > 黃子軒 / Email:nimahuang.work@gmail.com * 專案參與成員: 黃子軒、黃丰嘉、許至齊 共計 3 人 [name=企劃書撰寫:黃子軒] ::: > [TOC] > *** ## **專案資訊** * **專案起迄時間** [time=] 2022/11/29 (二) - 2022/12/13 (二) [time=] 2023/03/02 (四) - 2023/03/18 (六) * **專案客戶資訊** * 許鐊 * 公司:Project Abyss 深淵計畫 * 職稱:專案經理 * 主要聯絡方式:Email(workingam.sheep@gmail.com) > 平日上班時間因為個人原因會比較晚回信,因此若非必要則在非工作時間進行此次專案相關的討論。 * **專案預期對象** [name=]Project Abyss 深淵計畫公司內部成員 * **專案交付** * [程式碼](https://github.com/Project-Abyss/Discord-Bot) * [操作說明文件 README.md](https://github.com/Project-Abyss/Discord-Bot/blob/main/README.md) * [企劃書與結案報告](https://hackmd.io/@4by55/BJOqC7XPj) --- ### *專案概述* 此 Discord 機器人主要為公司內部溝通的小工具,除公告模板外,增加抽籤及投票功能。 此專案接續前團隊機器人設定,使用 Python 進行功能開發。 --- ### *預期目標* - 考慮到模板機器人尚缺乏 Discord 機器人之功能性,因此希望藉由新增**投票**與**抽籤**功能來協助機構組織內部人員提升工作之效率。 - **抽籤功能**中,須包含成員抽籤與身分組抽籤兩種情況,其中在抽籤名單中出現人員重複之狀況時,應維持抽籤公平性。 - **投票功能**中,須包含一人一票與一人多票兩種情況,在結果呈現時除最高票選項外,亦呈現其餘選項投票之狀況。 --- ## **專案內容** ### *環境* - python 3.X 版本 ### *技術簡介* :::info **Discord Bot 功能** 1. 公告訊息 2. 投票 - 能夠設計**多票制**和**單票制**。 3. 抽籤 - 可以選擇**成員**和**身分組**。 - 身分組 - 能夠設計**多選**和**單選**。 > 同時有 A 和 B 身分組的人算為同一個人。 - 使用身分組為抽籤方式時,要以個體為抽籤單位。 > e.g._10 個人擁有 A 身分組,但每個人抽到的機率為 1/10。 ::: ### *系統架構* > **原始架構** ![](https://i.imgur.com/oyv6bJr.png) > **新增功能後之架構** ![](https://i.imgur.com/w54w7Ii.png) > **程式碼架構** * `main.py`:撰寫抓取機器人 TOKEN,操作機器人之指令 * `.env`:存放機器人 TOKEN * `function`:放置選擇模板之選單與所有模板之程式碼,包含功能、輸出設定 * `menu.py`:撰寫選擇模板之下拉式選單 * 選單中之模板與工具檔案: * `Meeting_Announcement_1.py` ➔ 公告範本一 * `Meeting_Announcement_2.py` ➔ 公告範本二 * `Announcement.py` ➔ 公告範本三 * `Foreign_courses.py` ➔ 公告範本四 * `Internal_courses.py` ➔ 公告範本五 * `Resource_storage.py` ➔ 公告範本六 * `Facebook_post.py` ➔ 公告範本七 * `drawlottery.py` ➔ 抽籤指令 * `drawlottery_member_and_role.py` ➔ 抽籤介面 * `Poll_Function.py` ➔ 投票指令 * `PollFunction_Menu.py` ➔ 產生投票指令之介面 --- ## **專案安排** ### *專案工作* * **分工概況** | 姓名 | 工作內容 | | --- | ------- | | 黃子軒 | 專案管理、與甲方溝通、文件撰寫 | | 黃丰嘉 | 程式碼撰寫、抽籤功能 | | 許至齊 | 程式碼撰寫、投票功能 | * **專案經理 黃子軒** * 相關文件撰寫 * 專案管理規劃 * 甲方溝通窗口 * **研發工程師** * **黃丰嘉** --【抽籤功能】-- 1. 選擇成員或身分組 2. 抽籤人數設定 3. 身分組名稱、成員名稱提示 * 提示形式:選單 * **許至齊** --【投票功能】-- 1. 投票議題欄位 2. 投票方式:多票、單票 3. 投票結果呈現 --- ## **備註與附件** - 接手的專案:[Discord Bot](https://github.com/Project-Abyss/Discord-Bot) ### *會議紀錄* - [專案啟動會議](https://hackmd.io/@4by55/B1XwFQXPi) - [專案重啟會議](https://hackmd.io/@4by55/SJafM-CAj) - [第二次專案會議](https://hackmd.io/@4by55/SJ4WKmDk2) - [第三次專案會議](https://hackmd.io/@4by55/ByqnRWggn)