此篇會根據上篇所學到的:
1.排程自動更新
2.Youtube API 取得追蹤人數
這篇將會結合在一起,
但會摻合 與第19篇的APP SHEET 服務
在指令觸發加入檢查"設定表"
先檢查有沒有在設定表中,有目標的功能與伺服器
- 有: 取得設定表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}'