ETH官方钱包

前往
大廳
主題

【教學(xué)】Discord Bot Twitter推文通知 - 免費(fèi)部署到雲(yún)端伺服器 (Flyio)

| 2023-10-09 22:26:47 | 巴幣 1218 | 人氣 6398

自從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/8/20:新的免費(fèi)方法(詳情)。
2024/8/1:Tweetcord更新方法
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
原理: 每隔一定的時(shí)間就去抓Twitter的通知,如果發(fā)現(xiàn)設(shè)置的轉(zhuǎn)推對(duì)像有新的推文,那就會(huì)即時(shí)發(fā)送到discord頻道。


影片教學(xué)(建議搭配文章一起服用)



設(shè)置


前置作業(yè)

  1. 沒(méi)fly.io帳號(hào)的先去 fly.io 辦一個(gè),需要綁定信用卡才能有免費(fèi)的額度可以使用,以下圖片是免費(fèi)額度的詳細(xì)介紹,是足以完全支撐該Tweetcord bot的運(yùn)作,不需要擔(dān)心被收費(fèi)(除非政策改變)。
  1. 政策改了,現(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就好。
        

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就可以了)

step 2
     在 cmd 輸入 flyctl auth login 登入你的 fly.io 帳戶(hù)。

step 3
    打開(kāi) https://github.com/Yuuzi261/Tweetcord/releases 挑最新的版本下載 Source code (zip),並解壓縮,裡面有2個(gè)檔案可以刪掉,分別是 .gitignore 、 LICENSE。

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
          完成後如下圖:
            
    編輯config.yml(記事本編輯即可):
           以下是每一行參數(shù)的解釋?zhuān)梢灾苯佑妙A(yù)設(shè),等熟悉了再回來(lái)更改。

step 5

    確保目前的路徑是在 tweetcord 資料夾的位置,然後在上方輸入 cmd 按下 Enter 鍵就會(huì)出現(xiàn)命令提示字元。

    輸入 fly launch,app name 你想要取什麼都行。

    取完 app name 後按 Enter 繼續(xù)執(zhí)行,選取要架設(shè)的伺服器位置,沒(méi)特別偏好就隨便挑一個(gè),挑完 Enter 繼續(xù)執(zhí)行。

     然後會(huì)遇到3個(gè)問(wèn)題,全部都輸入 N 就好,之後確認(rèn)一下 tweetcord 資料夾內(nèi)有沒(méi)有一個(gè)名為 fly.toml 的檔案,有的話(huà)就繼續(xù)下一步。

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ì)被重置。

step 7

    來(lái)到 fly.io 的 DashBoard 就會(huì)看到剛剛創(chuàng)建的 app。

      點(diǎn)進(jìn)去後在右列清單找到 Secrets,然後按下 New Secret 按鈕,我們要?jiǎng)?chuàng)建2個(gè) Secrets,Name 的部分必須完全跟圖片上一樣,然後 Secret 分別是輸入你的 discord bot token 和 Twitter 的 auth_token。

step 8

    打開(kāi) tweetcord 資料夾內(nèi)的 fly.toml 檔案進(jìn)行編輯(記事本編輯即可),將我選取起來(lái)的部分刪除。

    把下方的內(nèi)容都貼到 fly.toml,source 是輸入你的 volume_name,其他都不需要改動(dòng)
        [env]
         DATA_PATH = "/data/"    
      [mounts]    
         source = "input_your_volume_name"    
         destination = "/data"
    最後結(jié)果如下圖:

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)行的狀況。

    這樣代表機(jī)器人已經(jīng)設(shè)置成功了,回到discord看,bot也已經(jīng)顯示在線(xiàn)。

    最後就是用 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



創(chuàng)作回應(yīng)

Jellyfish
跟著影片做最後輸入flyctl deploy 跑出下列錯(cuò)誤!請(qǐng)問(wèn)是什麼問(wèn)題呢?

failed to update machine 908016e1b091e8: machine in group 'app' needs an unattached volume named 'tweetowa' in region 'nrt'
2024-08-20 00:46:21
你設(shè)置volume的伺服器必須在nrt,就跟你當(dāng)初創(chuàng)建app選的伺服器一樣,影片裡有提到
2024-08-20 00:57:52
Jellyfish
https://truth.bahamut.com.tw/s01/202408/6e3eebce02377cd5ae5322d137b02994.PNG
2024-08-20 00:48:31
Jellyfish
https://truth.bahamut.com.tw/s01/202408/59628e452c97140efcee15e2512d5602.PNG
https://truth.bahamut.com.tw/s01/202408/18902c85a7116cad47cdc4946473901e.PNG
2024-08-20 01:25:01
Jellyfish
都有在nrt
2024-08-20 01:25:13
fly.toml裡面的volume name看看有沒(méi)有打錯(cuò),或是考慮重來(lái)?yè)Q個(gè)region部署,不排是除flyio自己的問(wèn)題
2024-08-20 01:57:29
也可以先試試這個(gè)指令
fly machines attach-volume <machine_id> <volume_id>
2024-08-20 02:03:51
Jellyfish
我直接重新照著影片做 連設(shè)定名子都一樣 看來(lái)是flyio的鍋了
2024-08-21 01:21:11
我今天有發(fā)新的教學(xué)文,是用其他的伺服器,比f(wàn)lyio簡(jiǎn)單,可以試試
2024-08-21 01:30:14

相關(guān)創(chuàng)作

更多創(chuàng)作