iT邦幫忙

2025 iThome 鐵人賽

DAY 9
0

上一篇我們使用 Discord Webhook 實現了基本的 CI/CD 通知功能,今天我將嘗試改用bot來進行,主要是因為bot相對來說功能上比較彈性,並且不僅僅只是單向的傳送,他可以做到雙向的互動,如果後續想要讓使用者對訊息做回覆或互動,就需要進一步的機制


Step 1:首先要寫一個能讓bot發送訊息的程式碼

async def on_ready():
        print(f"✅ 已登入為 {bot.user}")
        
        try:
            # 獲取頻道(輸入頻道 ID)
            channel = bot.get_channel(您的頻道ID)
            if channel:
                # 根據命令行參數發送不同訊息
                status = sys.argv[1] if len(sys.argv) > 1 else "unknown"
                
                if status == "success":
                    message = "🎉 CI/CD 測試成功!所有檢查通過。"
                elif status == "failure":
                    message = "❌ CI/CD 測試失敗!請檢查錯誤。"
                else:
                    message = "🤖 CI/CD 流程執行完成。"
                
                await channel.send(message)
                print(f"✅ 已發送訊息:{message}")
            else:
                print("❌ 無法找到頻道")
                
        except Exception as e:
            print(f"❌ 發送訊息時出錯:{e}")
        finally:
            await bot.close()

Step 2:在github secret中新增DISCORD_TOKEN
Step 3:接著修改workflow

- name: 📢 使用 Bot 發送通知
      if: always()
      env:
        DISCORD_TOKEN: ${{ secrets.DISCORD_TOKEN }}
        GH_TOKEN: ${{ secrets.GH_TOKEN }} 
      run: |
        # 安裝額外依賴(如果需要的話)
        pip install discord.py
        
        # 根據執行狀態傳遞參數
        if [ "${{ job.status }}" = "success" ]; then
          python scripts/send_notification.py success
        else
          python scripts/send_notification.py failure
        fi

Step 4:接著修改workflow的job
Step 5:運行程式碼看是否可以運作,接著推送至github
最後回到github可以查看pipeline
https://ithelp.ithome.com.tw/upload/images/20250922/20169329Ttc8D04T7O.png
測試成功後bot也成功在discord傳送通知
https://ithelp.ithome.com.tw/upload/images/20250922/201693296lOUbXVqAm.png


上一篇
用 Webhook 打通 Discord 通知管道
系列文
用 Discord Bot 玩轉 DevOps9
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言