diff --git a/blog/2024-08-24-HITCON2024/index.md b/blog/2024-08-24-HITCON2024/index.md new file mode 100644 index 0000000..ef9605a --- /dev/null +++ b/blog/2024-08-24-HITCON2024/index.md @@ -0,0 +1,17 @@ +--- +slug: hitcon2024 +title: HITCON 2024 +authors: [SCAICT] +tags: [HITCON 2024,社群活動] +--- +中電在今年 2024 HITCON 有參與社群擺攤,地點在中央研究院人文社會科學館, + +今年的攤位我們準備了中電喵貼紙和中電 bar 闖關在現場和大家互動,並延長了幹部招募時間連同前兩天的 AIS3 club 宣傳以增加下一屆招募人數。 + +## 中電 bar +![中電 bar](https://raw.githubusercontent.com/SCAICT/2024-HITCON-barcode/main/posters/og.jpg) +當天攤位有準備兩面顏色不同的冰棒棍,遊戲規則是用 EAN-8 編碼方式拼出指定的八位數字,計時排名,完成贈送電電 +中電 bar 原始碼現在已經在 [GitHub](https://github.com/SCAICT/2024-HITCON-barcode) 上釋出,現在也可以繼續遊玩,但過關後不會贈送獎品。 + +## 中電喵貼紙 +中電商店復刻,商品包郵方式正在討論中,很快就會正式上線。 diff --git a/blog/2024-08-24-uwuAPI/index.md b/blog/2024-08-24-uwuAPI/index.md index b1634ec..6bab542 100644 --- a/blog/2024-08-24-uwuAPI/index.md +++ b/blog/2024-08-24-uwuAPI/index.md @@ -2,22 +2,23 @@ slug: gift-api title: 中電喵送禮 by Discord API authors: [iach526] -tags: [HITCON 2024,SCAICT-uwu,中電喵] +tags: [HITCON 2024,SCAICT-uwu] --- -中電會報名了 HITCON 2024 的社群擺攤,為此我們資訊組設計了[中電 bar](https://github.com/SCAICT/2024-HITCON-barcode) 讓大家來攤位遊玩。遊戲過關後會私訊通知並發送獎勵,但之前做的發送獎勵只能透過在頻道使用斜線指令使用 pycord 傳訊息 ,在這個 case 得直接用在網頁程式裡面呼叫,這勢必得修改一點點程式,因此催生了這篇部落格教學 +中電會報名了 HITCON 2024 的社群擺攤,為此資訊組設計了[中電 bar](https://github.com/SCAICT/2024-HITCON-barcode) 讓大家來攤位遊玩。遊戲過關後會私訊通知並發送獎勵,但之前做的發送獎勵只能透過在頻道使用斜線指令使用 pycord 傳訊息 ,在這個 case 得直接用在網頁程式裡面呼叫,這勢必得修改一點點程式,因此催生了這篇部落格教學 要操控中電喵(或你的 bot) 的形象幫忙發訊息是一個很常見的需求,中電喵公告也是用相同的原理。Discord 提供了 API 讓我們呼叫,只要給 API bot token 和要傳送的訊息,就能達成我們的目的。本篇文章會用 python 的 request 套件示範 ## 常數定義 +本文章中若該程式碼區塊若沒有另外定義以下變數值,均採用這裡的定義方式。 ```python discord_token = "Discord Bot Token" target_user_id = "要送訊息的目標帳號 ID" guild_id = "伺服器 ID ,我們會希望私訓的對象和 bot 在同一個伺服器" ``` ## 步驟 0: 驗證該使用者是否存在 -這同時也是一個簡單且完整的 GET 請求示範,設定 header、url 和 payload並發出請求。我建議在發送 DM 訊息之前先檢查使用者是否在伺服器裡面。 +這同時也是一個簡單且完整的 GET 請求示範,設定 header、url 和 payload並發出請求。我建議在發送 DM 訊息之前先檢查使用者是否在伺服器裡面。如果不存在,會回傳 JSON:```{'message': 'Unknown Member', 'code': 10007}``` ```python url = f"https://discord.com/api/v10/guilds/{guild_id}/members/{target_user_id}" @@ -92,23 +93,23 @@ button = { #### 下表為 components 底下元素常用的屬性,更多內容可以參考(官方文檔)[https://discord.com/developers/docs/interactions/message-components] -| 屬性 | 類型 | 說明 | -|--------------|--------|------------------------------------------------------------------------------------------| -| `type` | 整數 | 按鈕的類型。`1` 表示 Action Row,用來包含多個按鈕;`2` 表示按鈕本身。 | -| `label` | 字串 | 按鈕上顯示的文本。最多 80 個字元。 | -| `style` | 整數 | 按鈕的樣式。可選值包括 `1` (Primary)、`2` (Secondary)、`3` (Success)、`4` (Danger)、`5` (Link)。 | -| `url` | 字串 | 當 `style` 設為 `5` 時,需要設置此屬性,指定按鈕指向的 URL。 | -| `custom_id` | 字串 | 用於識別按鈕的唯一 ID(僅在 `style` 不為 `5` 時使用)。 | -| `disabled` | 布林值 | 是否禁用此按鈕。`True` 為禁用,`False` 為啟用。默認為 `False`。 | - - -| `style` 數值 | 按鈕樣式 | 說明 | -|--------------|------------------|--------------------------------------------| -| `1` | Primary Button | 藍色按鈕,用於主要操作。 | -| `2` | Secondary Button | 灰色按鈕,用於次要操作。 | -| `3` | Success Button | 綠色按鈕,用於表示成功或正面的操作。 | -| `4` | Danger Button | 紅色按鈕,用於表示危險或破壞性的操作。 | -| `5` | Link Button | 透明背景帶下劃線的文字按鈕,用開啟 URL 連結。 | +| 屬性 | 類型 | 說明 | +| ----------- | ------ | ------------------------------------------------------------------------------------------------ | +| `type` | 整數 | 按鈕的類型。`1` 表示 Action Row,用來包含多個按鈕;`2` 表示按鈕本身。 | +| `label` | 字串 | 按鈕上顯示的文本。最多 80 個字元。 | +| `style` | 整數 | 按鈕的樣式。可選值包括 `1` (Primary)、`2` (Secondary)、`3` (Success)、`4` (Danger)、`5` (Link)。 | +| `url` | 字串 | 當 `style` 設為 `5` 時,需要設置此屬性,指定按鈕指向的 URL。 | +| `custom_id` | 字串 | 用於識別按鈕的唯一 ID(僅在 `style` 不為 `5` 時使用)。 | +| `disabled` | 布林值 | 是否禁用此按鈕。`True` 為禁用,`False` 為啟用。默認為 `False`。 | + + +| `style` 數值 | 按鈕樣式 | 說明 | +| ------------ | ---------------- | --------------------------------------------- | +| `1` | Primary Button | 藍色按鈕,用於主要操作。 | +| `2` | Secondary Button | 灰色按鈕,用於次要操作。 | +| `3` | Success Button | 綠色按鈕,用於表示成功或正面的操作。 | +| `4` | Danger Button | 紅色按鈕,用於表示危險或破壞性的操作。 | +| `5` | Link Button | 透明背景帶下劃線的文字按鈕,用開啟 URL 連結。 | ## 步驟 3: 組裝請求的 JSON 資料 最後,需要將 Embeds message 和按鈕組裝成一個 JSON 物件,並透過 API 發送請求。 @@ -128,8 +129,6 @@ json_data = { 當所有的參數準備好後,我們可以使用 `requests` 模組來發送 POST 請求。 ```python -import requests - response = requests.post(url, headers=headers, json=json_data) if response.status_code == 200: print("訊息發送成功!") @@ -138,7 +137,4 @@ else: ``` ## 總結 -這篇 blog 教你先用 GET 看看用戶是否存在某伺服器,然後 - - -這樣就完成了!透過這個範例,你已經學會了如何使用 Discord API 發送帶有 Embeds message 和按鈕的 DM 訊息。這種互動性可以大大提升用戶體驗,讓你的機器人更加實用和有趣。 +這篇 blog 教你先用 GET 看看用戶是否存在某伺服器,然後傳送一個包含按鈕、embed 的 DM 訊息給對方。你學會了嗎? \ No newline at end of file diff --git a/blog/authors.yml b/blog/authors.yml index de92712..905bf07 100644 --- a/blog/authors.yml +++ b/blog/authors.yml @@ -8,4 +8,9 @@ iach526: name: Each Chen title: 第3屆資訊組組員 url: https://github.com/iach526526 - image_url: https://github.com/iach526526.png \ No newline at end of file + image_url: https://github.com/iach526526.png +SCAICT: + name: SCAICT + title: 中電會 + url: https://github.com/SCAICT + image_url: https://github.com/SCAICT.png \ No newline at end of file diff --git a/blog/tags.yml b/blog/tags.yml index a6f8155..821762b 100644 --- a/blog/tags.yml +++ b/blog/tags.yml @@ -5,4 +5,12 @@ news: hello: label: Hello permalink: /hello - description: Hello tag description \ No newline at end of file + description: Hello tag description +HITCON 2024: + label: HITCON 2024 + permalink: /hitcon-2024 + description: 中電會在 HITCON 2024 的相關文章 +SCAICT-uwu: + label: 中電喵 + permalink: /scaict-uwu + description: 中電喵-一隻住在中電會 Discord 的喵喵