本篇教學會帶大家部署一個自動參加 Discord 抽獎機器人,會使用雲端主機 Google Cloud Function,好處是不會面臨電腦關機時機器人就休息的情況,然後 Google 也有提供一定使用額度內免費,所以基本上是完全零成本免費部署,讓大家都可以解放雙手和注意力,不會再錯過任何 Discord 的抽獎項目!
會有這篇文章的誕生,主要感謝 Fomo dog 社群中的 meta Simon 和 saibalmars 狗友們,不斷地改進和修正程式碼 (如下連結),才會有今天的 Discord 抽獎機器人(雲端穩定版本)
Table
1. 申請 Google Cloud Platform
首先我們要申請 Google Cloud Platform 的帳號,可以從這裡進入,Google 目前有提供 3 個月內 300 美金的額度使用,而我們這次會使用 GCP 裡面的 Google Cloud Function,以這次部署的程式的每用使用量來說,每月的花費在 0 塊台幣以內。

接下來建立第一個專案,專案名稱可以依自己喜好命名

2. 創建 Cloud Function
接下來在搜尋欄中搜尋 “Cloud Function”,並且選擇建立函式

創建 Cloud Function – Step 1
- 函式名稱:可以自由填寫
- 選擇區域:可以挑選自己喜歡的主機所在地,這邊選擇 asia-east1 台灣
- 觸發條件:選擇 Cloud Pub / Sub
- 建立一個 Pub / Sun 主題 > 輸入主題 ID (可隨意填) > 選擇建立主題
- 選擇儲存
- 並點選下一步

創建 Cloud Function – Step 2
- 選擇啟用 API
- 選擇執行階段 Python 3.9

創建 Cloud Function – Step 3
- 選擇 main.py
- 輸入進入點:getlist
- 輸入我們的抽獎機器人程式碼

步驟 3 裡面的完整程式碼如下: (請在 bots_setting 中加入自己想要追蹤的抽獎頻道,關於參數設定可以參考 Simon 的這篇)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 |
import requests import json import random import time from datetime import datetime def getlist(event, context): # You can add more than one bot if you have multiple discord accounts. bots_setting = [ { "name": "bot1", "authorizations": [ "token1","token2", ], # Please remember to put in your discord message authorization code # spearate by comma if you have more than one token. "channel_lists": [ { "name": "Alpha Shark", # Nickname for the channel "settings": { "channel_id": "927557825486536764", # Channel's discord ID "lottery_keyword": "React with \\ud83c\\udf89 to enter!", # Lottery keyword to detect: "React with 🎉 to enter!" "emojis_to_click": ["%F0%9F%8E%89"] # emoji to click } },{ "name": "channel2", # Nickname for the channel "settings": { "channel_id": "927557825486536764", # Channel's discord ID "lottery_keyword": "React with \\ud83c\\udf89 to enter!", # Lottery keyword to detect: "React with 🎉 to enter!" "emojis_to_click": ["%F0%9F%8E%89"] # emoji to click } } # can add more channel here ] } ] limit=10 for bot in bots_setting: for auth in bot["authorizations"]: header = { "Authorization": auth, "Content-Type": "application/json", "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.61 Safari/537.36", } for channel in bot["channel_lists"]: url = "https://discord.com/api/v9/channels/{}/messages?limit={}".format(channel["settings"]["channel_id"], limit) try: res = requests.get(url=url, headers=header) messages_json = json.loads(res.text) for message in messages_json: try: if channel["settings"]["lottery_keyword"] in json.dumps(message): is_lottery_post = True else: is_lottery_post = False if is_lottery_post: print("-------------Lottery captured!--------------") print("Date:", datetime.now()) print("Channel:", channel["name"]) print("Message ID:", message["id"]) print("Content:", message["content"]) print("embeds:", message["embeds"]) for emoji in channel["settings"]["emojis_to_click"]: url = "https://discord.com/api/v9/channels/{}/messages/{}/reactions/{}/%40me".format( channel["settings"]["channel_id"], message["id"], emoji) requests.put(url=url, headers=header) time.sleep(1) except: print("Failed to expand messages.") pass except: print("Failed to get discord message.") pass |
在步驟 4 裡面的 requirements.txt 裡面加入 requests,完整程式碼如下:
1 2 3 |
# Function dependencies, for example: # package>=version requests |
最後點擊部署!但程式目前還不會自動執行,我們還要加上觸發時間
3. 設定觸發時間
- 在搜尋欄中,搜尋 cloud scheduler,並建立一個新工作
- 名稱:Hourly (這邊可以隨意填)
- 地區:選擇台灣
- 頻率:30 * * * * (這個意思是每個小時會執行一次)
- 時區:世界標準時間
- Pub / Sub 主題:選擇我們稍早在創立 Cloud function 時所創造的 hourly 的 Pub / Sub
- 訊息內文:這邊可以隨便填

最後選擇建立!就完成觸發條件設定囉
4. 如何檢查 Discord 抽獎機器人
如何確定程式有執行?基本上只要沒事去看一下 Discord 抽獎頻道,確認有沒有點擊抽獎就可以了
擔心的話可以到 Cloud Function > 紀錄裡面,可以看到程式執行過程 (如下圖)

那 [零基礎上手] Discord 自動參加抽獎機器人(雲端穩定版) 就到這邊感謝收看,如文章內容有誤請不吝指正!
▍相關延伸閱讀:
- [零基礎上手] Discord 自動發言機器人
- 如何使用 Tornado Cash 教學,隱藏自己的鏈端資料
- 如何使用 Sudoswap 場外交易,避免 NFT 被抽手續費
- [Chrome 套件] ETH GAS Fee 和 釣魚網站檢測
- 冷錢包 Trezor Model T 購買和教學
▍其他延伸閱讀:
在〈[零基礎上手] Discord 自動參加抽獎機器人(雲端穩定版)〉中有 7 則留言
您好 我是Abel 能跟您談談嗎?
嗨嗨,可以喲,在私訊我 🙂
請問有 twitter raffle 版本的嗎?
前陣子有在研究,但 twitter API 被擋。看來只能用自動化測試工具來做了…
另外想問一下
你們目前這個方案,有被封號過嗎?
目前這個方案是每小時掃一次,不要去調整成每分鐘掃或搭配其他抽獎機器人使用的話,正常使用下是不會有問題的!
嗨嗨,目前沒有喲,只有 discord 自動抽獎機器人
感謝回應 !
另外想了解,是否有研究過 “button” 類型,而不是 “emoji” 的抽獎?
我看 trait sniper 很愛用這種,有個綠色的 “enter” 可以按。
不知道這樣的動作是否也能透過 API 實現?
留言功能已關閉。