iT邦幫忙

2023 iThome 鐵人賽

DAY 23
0
自我挑戰組

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

Python Discord Bot#23 - 做中學-人數顯示(一)

  • 分享至 

  • xImage
  •  

根據上一篇來做一個延伸內容,
想做一個自動刷YT人數追蹤人數的顯示。
所以此篇會有兩個重點:
1.排程自動更新
2.Youtube API 取得追蹤人數

排程

使用方法:

import discord
from discrod.ext import tasks

client = command.Bot()

@tasks.loop(minutes=1)
async def scheduleRun():
    print('running')

@client.event
  async def on_ready():
    print(f"「{client.user}」已登入")
    schduleRun.start()


client.run("Token")

執行:
https://ithelp.ithome.com.tw/upload/images/20230922/201060713M3HX4Ocko.png

Youtube API

import json
import urllib.request

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}'

SECRET_KEY 是金鑰
channelID 為目標youtube 頻道ID

使用 Slash_command 觸發 人數

在觸發命令時,需要輸入channelID 頻道ID
https://ithelp.ithome.com.tw/upload/images/20230923/20106071mXoU9F8uiU.png

使用 Option 來宣告想要輸入的內容,
此次的內容為 字串、必填的 頻道編號。

from discord.commands import Option

@Bot.slash_command(name="channel", description="建立YT人數頻道")
    async def create_channel(ctx, channelID: Option(str, "輸入頻道編號", name="頻道編號", required=True)):
      
        try:
            guild = Bot.get_guild(ctx.guild.id) 
            channel = await guild.create_voice_channel(get_youtube_subscribers(channelID), overwrites={ctx.guild.default_role: discord.PermissionOverwrite(connect=False)})
            print(channel.id)
            await ctx.respond("新增完成", ephemeral=True)
        except Exception as errors:
            print(f"Bot Error: {errors}")
            await ctx.respond("發生錯誤: " + errors, ephemeral=True)

剩下下一篇處理


上一篇
Python Discord Bot#22 - 做中學-建立頻道
下一篇
Python Discord Bot#24 - 做中學-人數顯示(二)
系列文
Python Discord Bot(DC機器人)31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言