iT邦幫忙

2025 iThome 鐵人賽

DAY 25
0
自我挑戰組

用 Discord Bot 玩轉 DevOps系列 第 25

功能模組化改造

  • 分享至 

  • xImage
  •  

目前已經實作出了多種功能,為了讓使用更直覺化,今天要將所有功能進行統一整合並模組化,讓結構更清晰,提升查詢效率


# 記錄控制面板訊息 ID(用於重啟時更新)
control_panel_message_id = None

整合CI/CD執行狀態以及commit最新紀錄

@discord.ui.button(label="📊 狀態監控", style=discord.ButtonStyle.primary, custom_id="status_monitor")
    async def status_monitor(self, interaction: discord.Interaction, button: discord.ui.Button):
        """狀態監控面板"""
        embed = discord.Embed(
            title="📊 DevOps 狀態監控",
            description="即時系統狀態與健康度檢查",
            color=0x3498DB
        )
        
        # 獲取即時狀態
        build_status = get_latest_build_status()
        commit_info = get_latest_commit()
        
        # 簡化狀態顯示
        embed.add_field(
            name="🔄 CI/CD 狀態",
            value="點擊下方按鈕查看詳細狀態",
            inline=False
        )
        
        embed.add_field(
            name="📝 最新提交",
            value="查看最近程式碼變更",
            inline=False
        )
        
        view = StatusMonitorView()
        await interaction.response.send_message(embed=embed, view=view, ephemeral=True)

管理PR merge紀錄及追蹤

@discord.ui.button(label="📝 變更管理", style=discord.ButtonStyle.success, custom_id="change_management")
    async def change_management(self, interaction: discord.Interaction, button: discord.ui.Button):
        """變更管理面板"""
        embed = discord.Embed(
            title="📝 變更管理控制台",
            description="追蹤程式碼變更與版本發布",
            color=0x27AE60
        )
        
        embed.add_field(
            name="🔄 更新檢查",
            value="立即檢查最新合併的 PR",
            inline=True
        )
        
        embed.add_field(
            name="📈 近期活動", 
            value="查看最近開發進度",
            inline=True
        )
        
        view = ChangeManagementView()
        await interaction.response.send_message(embed=embed, view=view, ephemeral=True)

查看系統排程情形

@discord.ui.button(label="⚙️ 排程管理", style=discord.ButtonStyle.secondary, custom_id="schedule_management")
    async def schedule_management(self, interaction: discord.Interaction, button: discord.ui.Button):
        """排程管理面板"""
        embed = discord.Embed(
            title="⚙️ 排程任務管理",
            description="自動化任務與排程設定",
            color=0xF39C12
        )
        
        next_check = get_next_monday()
        
        embed.add_field(
            name="⏰ 下次檢查",
            value=f"{(next_check + timedelta(hours=8)).strftime('%Y-%m-%d %H:%M')} (台灣時間)",
            inline=True
        )
        
        embed.add_field(
            name="📊 排程狀態",
            value="✅ 運行中" if CHANGELOG_CHANNEL_ID else "❌ 未啟用",
            inline=True
        )
        
        view = ScheduleManagementView()
        await interaction.response.send_message(embed=embed, view=view, ephemeral=True)

查詢系統運行環境設置

@discord.ui.button(label="🔧 系統資訊", style=discord.ButtonStyle.gray, custom_id="system_info")
    async def system_info(self, interaction: discord.Interaction, button: discord.ui.Button):
        """系統資訊面板"""
        embed = discord.Embed(
            title="🔧 系統資訊與支援",
            description="環境設定與技術資源",
            color=0x95A5A6
        )
        
        embed.add_field(
            name="🌐 運行環境",
            value="Render" if not os.path.exists('.env') else "本地",
            inline=True
        )
        
        embed.add_field(
            name="🤖 Bot 狀態",
            value="✅ 在線",
            inline=True
        )
        
        view = SystemInfoView()
        await interaction.response.send_message(embed=embed, view=view, ephemeral=True)

實際操作執行結果
https://ithelp.ithome.com.tw/upload/images/20251008/20169329FegSTQ1PFR.png
輸入!panel呼叫面板


上一篇
用BOT手動查看更新日誌
系列文
用 Discord Bot 玩轉 DevOps25
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言