主題
自從Twitter執(zhí)行長(zhǎng)Musk修改api後,各大Discord伺服器的Twitter轉(zhuǎn)發(fā)bot應(yīng)該都無(wú)法繼續(xù)運(yùn)作,除非付費(fèi),但我們還是有免費(fèi)的方法可以用,感謝Github上大神弄得逆向工程 tweety-ns,接下來(lái)介紹使用該逆向工程製作的discord bot。
相關(guān)更新
2024/7/26:flyio收費(fèi)機(jī)制改變,不再免費(fèi)(詳情)。
2024/5/29:新增影片教學(xué)。
2024/4/12:[更新] Discord Bot Twitter推文通知 - 免費(fèi)部署到雲(yún)端伺服器
Tweetcord
Github: https://github.com/Yuuzi261/Tweetcord
![](https://i.imgur.com/SXITM0a.png)
![](https://i.imgur.com/vHDLfjc.png)
![](https://i.imgur.com/bkiFY2s.png)
編輯config.yml(記事本編輯即可):
![](https://i.imgur.com/PvdjQkp.png)
![](https://i.imgur.com/RtCQpz8.png)
![](https://i.imgur.com/GL61NCz.png)
![](https://i.imgur.com/KRBeMEb.png)
![](https://i.imgur.com/SrWyTh9.png)
![](https://i.imgur.com/DPotIE3.png)
![](https://i.imgur.com/ly5ZszJ.png)
![](https://i.imgur.com/0SGpODQ.png)
![](https://i.imgur.com/sg4EHci.png)
![](https://i.imgur.com/zUoCndN.png)
![](https://i.imgur.com/ZKrErtz.png)
![](https://i.imgur.com/4Gft4yh.png)
原理: 每隔一定的時(shí)間就去抓Twitter的通知,如果發(fā)現(xiàn)設(shè)置的轉(zhuǎn)推對(duì)像有新的推文,那就會(huì)即時(shí)發(fā)送到discord頻道。
![](https://i.imgur.com/SXITM0a.png)
影片教學(xué)(建議搭配文章一起服用)
設(shè)置
前置作業(yè)
沒(méi)fly.io帳號(hào)的先去 fly.io 辦一個(gè),需要綁定信用卡才能有免費(fèi)的額度可以使用,以下圖片是免費(fèi)額度的詳細(xì)介紹,是足以完全支撐該Tweetcord bot的運(yùn)作,不需要擔(dān)心被收費(fèi)(除非政策改變)。
- 政策改了,現(xiàn)在新用戶(hù)就是用Pay As You Go方案,即用多少付多少,我們會(huì)用到的主機(jī)配置是256Mb的記憶體和share-cpu-1x,一個(gè)月最低64左右臺(tái)幣,詳情點(diǎn)這裡,能接受要付費(fèi)再繼續(xù)往下看吧~
2. 需要一個(gè)discord bot token,以下連接有關(guān)於獲取token的教學(xué)和一些關(guān)於discord bot的常識(shí)。
3. 要取得你twitter帳號(hào)的auth_token,登入twitter後找到以下圖片裡的cookie name,它的
value 就是我們需要的,看你是要用插件還是其他方法都行,能找到該cookie就好。
![](https://i.imgur.com/vHDLfjc.png)
step 1
電腦按下 win+R,輸入 cmd 會(huì)跳出命令提示字元,接著再輸入以下指令安裝 flyctl,並且等待安裝完成。
-> pwsh -Command "iwr https://fly.io/install.ps1 -useb | iex"
(如果出現(xiàn) 'pwsh' 不是內(nèi)部或外部命令、可執(zhí)行的程式或批次檔 錯(cuò)誤的話(huà),把前面的pwsh改成powershell就可以了)
![](https://i.imgur.com/TevTHdd.png)
![](https://i.imgur.com/TevTHdd.png)
step 2
在 cmd 輸入 flyctl auth login 登入你的 fly.io 帳戶(hù)。
![](https://i.imgur.com/2K2Htjx.png)
![](https://i.imgur.com/2K2Htjx.png)
step 3
打開(kāi) https://github.com/Yuuzi261/Tweetcord/releases 挑最新的版本下載 Source code (zip),並解壓縮,裡面有2個(gè)檔案可以刪掉,分別是 .gitignore 、 LICENSE。
![](https://i.imgur.com/2uKxprA.png)
![](https://i.imgur.com/2uKxprA.png)
step 4
建立Dockerfile: 新增一個(gè)叫 Dockerfile 的檔案,把以下內(nèi)容複製貼到進(jìn)去(記事本編輯即可)。
FROM python:3.10.9
WORKDIR /bot
COPY requirements.txt /bot/
RUN pip install -r requirements.txt
COPY . /bot/
CMD python bot.py
完成後如下圖:
![](https://i.imgur.com/bkiFY2s.png)
編輯config.yml(記事本編輯即可):
以下是每一行參數(shù)的解釋?zhuān)梢灾苯佑妙A(yù)設(shè),等熟悉了再回來(lái)更改。![](https://i.imgur.com/IjRxPaq.png)
![](https://i.imgur.com/IjRxPaq.png)
step 5
確保目前的路徑是在 tweetcord 資料夾的位置,然後在上方輸入 cmd 按下 Enter 鍵就會(huì)出現(xiàn)命令提示字元。
![](https://i.imgur.com/PvdjQkp.png)
輸入 fly launch,app name 你想要取什麼都行。
![](https://i.imgur.com/RtCQpz8.png)
取完 app name 後按 Enter 繼續(xù)執(zhí)行,選取要架設(shè)的伺服器位置,沒(méi)特別偏好就隨便挑一個(gè),挑完 Enter 繼續(xù)執(zhí)行。
![](https://i.imgur.com/GL61NCz.png)
然後會(huì)遇到3個(gè)問(wèn)題,全部都輸入 N 就好,之後確認(rèn)一下 tweetcord 資料夾內(nèi)有沒(méi)有一個(gè)名為 fly.toml 的檔案,有的話(huà)就繼續(xù)下一步。
![](https://i.imgur.com/KRBeMEb.png)
step 6
在 cmd 裡面輸入 flyctl volumes create <volume_name> -a <your_app_name>,<volume_name> 隨便取個(gè)名子就行,然後 <your_app_name> 是輸入剛剛上一步驟的 app name,region必須跟 step5 選一樣的,最後的結(jié)果如下圖。這一步驟主要是以後更新bot的時(shí)候,防止儲(chǔ)存資料的database不會(huì)被重置。
![](https://i.imgur.com/SrWyTh9.png)
step 7
來(lái)到 fly.io 的 DashBoard 就會(huì)看到剛剛創(chuàng)建的 app。
![](https://i.imgur.com/DPotIE3.png)
點(diǎn)進(jìn)去後在右列清單找到 Secrets,然後按下 New Secret 按鈕,我們要?jiǎng)?chuàng)建2個(gè) Secrets,Name 的部分必須完全跟圖片上一樣,然後 Secret 分別是輸入你的 discord bot token 和 Twitter 的 auth_token。
![](https://i.imgur.com/ly5ZszJ.png)
![](https://i.imgur.com/0SGpODQ.png)
step 8
打開(kāi) tweetcord 資料夾內(nèi)的 fly.toml 檔案進(jìn)行編輯(記事本編輯即可),將我選取起來(lái)的部分刪除。
![](https://i.imgur.com/sg4EHci.png)
把下方的內(nèi)容都貼到 fly.toml,source 是輸入你的 volume_name,其他都不需要改動(dòng)。
[env]
DATA_PATH = "/data/"
[mounts]
source = "input_your_volume_name"
destination = "/data"
最後結(jié)果如下圖: ![](https://i.imgur.com/qaGn0AY.png)
![](https://i.imgur.com/qaGn0AY.png)
final step
回到 cmd 輸入 flyctl deploy ,這個(gè)指令會(huì)開(kāi)始部署 bot,如果以後常常更新 bot 的話(huà),一樣是用這個(gè)指令部署,第一次使用該指令的話(huà)會(huì)要點(diǎn)時(shí)間。
看到這個(gè)就代表你至少部署成功了,但是還不能確定bot是不是成功啟動(dòng),連接點(diǎn)進(jìn)去可以到看bot在後臺(tái)運(yùn)行的狀況。
![](https://i.imgur.com/zUoCndN.png)
這樣代表機(jī)器人已經(jīng)設(shè)置成功了,回到discord看,bot也已經(jīng)顯示在線(xiàn)。
![](https://i.imgur.com/ZKrErtz.png)
![](https://i.imgur.com/4Gft4yh.png)
最後就是用 slash command 設(shè)置的部份了,指令部份的相關(guān)說(shuō)明都在以下連接裡面。
結(jié)語(yǔ)
步驟應(yīng)該算是很完整了,有不清楚的部份或是跟discord bot相關(guān)的問(wèn)題都可以問(wèn),我會(huì)盡快回覆。祝大家都可以順利完成自己的 discord bot 部署。
題外話(huà),由於該 discord bot 的架構(gòu)是 cog,所以可以很輕易地?cái)U(kuò)充其他功能或是指令,有興趣的可以自行研究。
cog相關(guān)教學(xué): https://hackmd.io/@smallshawn95/python_discord_bot_cog