iT邦幫忙

2023 iThome 鐵人賽

DAY 24
0
自我挑戰組

Python Discord Bot(DC機器人)系列 第 24

Python Discord Bot#24 - 做中學-人數顯示(二)

  • 分享至 

  • xImage
  •  

此篇會根據上篇所學到的:
1.排程自動更新
2.Youtube API 取得追蹤人數

這篇將會結合在一起,
但會摻合 與第19篇的APP SHEET 服務


功能結合

在指令觸發加入檢查"設定表"
https://ithelp.ithome.com.tw/upload/images/20230923/20106071ay0TJCdvxe.png

先檢查有沒有在設定表中,有目標的功能與伺服器
- 有: 取得設定表Id 並 更新 已上入的頻道上文字
- 無: 自己新增一個,並存入 設定表


將 排程加入內容:
取得 需要更新的目標,一筆一筆更新頻道文字。

import os
import json
import urllib.request
from src.googleAppSheet import app_sheet_find # 自己寫的
from discord.ext import tasks

def _init(Bot):
  
  @tasks.loop(minutes=1)
  async def running():
      selector = f"FILTER('設定檔',([功能名稱] = 'Youtube人數', [功能開關] = true, [排程] = true))" 
  resultStr = app_sheet_find("設定檔", selector)
  result = json.loads(resultStr)

  for data in result:
    guild = Bot.get_guild(int(data["伺服器"]))
    if guild is not None:
      loadChannel = json.loads(data["設定"])
      loadYTID = loadChannel["頻道ID"]
      loadChannelID = loadChannel["伺服器ID"]
      channel = guild.get_channel(loadChannelID)
      await channel.edit(name=get_youtube_subscribers(loadYTID))

      print(f'{loadChannelID}YT頻道文字已更新')

  running.start()
  
def get_youtube_subscribers(channelID):
  data = urllib.request.urlopen("https://www.googleapis.com/youtube/v3/channels/?part=statistics&id="+channelID+"&key="+os.getenv("SECRET_KEY")).read()
  subs = json.loads(data)["items"][0]["statistics"]["subscriberCount"]
  
  return f'YouTube 訂閱人數: {subs}'

https://ithelp.ithome.com.tw/upload/images/20230923/20106071iK4XkDfPt8.png
https://ithelp.ithome.com.tw/upload/images/20230923/20106071mqA615fPym.png


上一篇
Python Discord Bot#23 - 做中學-人數顯示(一)
下一篇
Python Discord Bot#25 - Tasks 排程
系列文
Python Discord Bot(DC機器人)31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言