Tweetcord是一個Discord機器人,它使用tweety-ns將指定Twitter用戶的即時推文更新傳送到你的Discord伺服器。只需設置想要關注的Twitter用戶和Discord頻道,Tweetcord就會自動將推文轉發到指定頻道,確保你不會錯過重要的更新。🐦
👉 /add notifier
username
channel
| mention
type
media_type
account_used
參數 | 類型 | 描述 |
---|---|---|
username |
str | 你想要開啟通知的Twitter用戶的用戶名 |
channel |
discord.TextChannel | 機器人發送通知的頻道 |
mention |
discord.Role | 通知時提及的身分組 |
type |
str | 設定是否啟用轉推和引用的通知 |
media_type |
str | 設定是否啟用包含多媒體的通知,或僅啟用包含多媒體的通知 |
account_used |
str | 用來追蹤用戶推文的Twitter客戶端 |
👉 /remove notifier
username
channel
參數 | 類型 | 描述 |
---|---|---|
username |
str | 你想要關閉通知的Twitter用戶的用戶名 |
channel |
discord.TextChannel | 設置為發送通知的頻道 |
👉 /list users
- 列出所有當前伺服器開啟通知的Twitter用戶
👉 /sync
- 將新Twitter帳戶的通知與資料庫同步。如果你更改了bot使用的Twitter帳戶,請使用此指令
👉 /customize message
username
channel
| default
參數 | 類型 | 描述 |
---|---|---|
username |
str | 你想要設定自定義通知訊息的Twitter用戶的用戶名 |
channel |
discord.TextChannel | 機器人發送通知的頻道 |
default |
bool | 是否要還原至預設的設定 (預設是false) |
自定義通知訊息為 f-string
格式,目前支援4種特別的變數可供使用,將在下面說明:
{action}
: 發文者的動作,包括tweeted
、retweeted
和quoted
(暫不支持中文){author}
: 發文者的顯示名稱{mention}
: 發送到discord時提及的身份組{url}
: 推文的連結
以預設通知為例,如果將訊息自定義為以下格式(支援Discord的markdown格式):
{mention}**{author}** just {action} here:
{url}
則會在推文發送時會以此格式發出通知(這裡舉一個實際例子):
@Ping_SubTweet ナチョネコ just tweeted here:
https://twitter.com/nyachodayo/status/1869000108697960952
在運行機器人之前,你需要安裝必要的模組。
pip install -r requirements.txt
📢本教學適用於0.5或更高版本,舊版設定請參考各個歷史版本的README。
BOT_TOKEN=YourDiscordBotToken
TWITTER_TOKEN=NameForYourTwitterToken:YourTwitterAccountAuthToken
DATA_PATH=./data
Note
這裡的 NameForYourTwitterToken
是可以隨意定義的,僅用來作為輸入指令時指定帳戶用的代號,不一定要和Twitter帳號名稱一致。
BOT_TOKEN=FAKE1234567890ABCDEFGHIJKLMNO.PQRSTUVWXYZ1234567890.ABCDEFGHIJKLMNOPQRSTUVWXYZ123456
TWITTER_TOKEN=Account1:12345abcde67890fghij12345klmnop67890qrstuv,Account2:abcdef123456ghijkl7890mnopqrst123456uvwx
DATA_PATH=./data
你可以從cookies中獲取你的token,或是你可以探索其他獲取它的方法。
建立 configs.yml
並將 configs.example.yml
的內容複製過去,並依照自己的喜好編輯它。
Important
這裡的所有配置說明和最新版本同步,舊版用戶請參考舊版README。
參數 | 描述 | 限制 |
---|---|---|
prefix |
機器人命令的前綴,只會對前綴指令生效。 | 無,但建議選擇簡單且易於識別的前綴,並避免使用空字串。 |
activity_name |
機器人顯示的活動名稱。 | 無。 |
activity_type |
機器人顯示的活動類型。 | 僅限 playing 、streaming 、listening 、watching 和 competing 。 |
users_list_pagination_size |
list users 指令的分頁大小。 |
只接受整數,不宜使用過大或過小的值。 |
users_list_page_counter_position |
list users 指令的分頁計數器位置。 |
僅限 title 和 footer 。 |
自定義活動名稱為 f-string
格式,目前支援1種特別的變數可供使用,將在下面說明:
{count}
: 目前被機器人追蹤的使用者數量,會即時更新
參數 | 描述 | 單位 |
---|---|---|
tweets_check_period |
檢查推文的頻率,不建議將此值設置得太低,以避免速率限制。預設值:10 ,安全值:18 (為什麼是這個數值?),不推薦低於 10 。如果Tweetcord控制的帳號和你平常在使用的帳號相同,請適當提高這個數值以避免速率限制。 |
秒 |
tweets_updater_retry_delay |
當Tweets Updater遇到異常時的重試間隔。 | 分鐘 |
tasks_monitor_check_period |
檢查每個任務是否正常運行的間隔,如果某個任務停止了,嘗試重新啟動。 | 分鐘 |
tasks_monitor_log_period |
將當前運行中的任務列表輸出到執行日誌的間隔。 | 小時 |
auth_max_attempts |
登入Twitter帳號時的最大嘗試次數,失敗超過此次數將會強制停止機器人運行。 | 次 |
參數 | 描述 |
---|---|
auto_change_client |
如果為現有使用者指定新用戶端,則自動使用新用戶端對該使用者進行追蹤。 |
auto_turn_off_notification |
如果某個使用者的所有通知都已停用,決定是否取消追蹤該使用者。 |
auto_unfollow |
如果某個使用者的所有通知都已停用,決定是否停用該使用者的通知(Twitter端)。 |
參數 | 描述 |
---|---|
auto_repair_mismatched_clients |
當資料庫中含有環境變數未定義的client_used 的話,是否自動使用目前環境變數所定義的第一個客戶端取代這些無效的客戶端名稱。 |
參數 | 描述 |
---|---|
type |
決定嵌入內容的類型,支援的類型有: built_in / fx_twitter 。 |
參數 | 描述 |
---|---|
fx_image |
當有多張圖片時是否使用FxTwitter的組合圖片,對於無法顯示多張圖片嵌入的iOS系統友善。 |
video_link_button |
即將推出 |
footer_logo |
即將推出 |
參數 | 描述 |
---|---|
domain_name |
傳送推文連結時的域名,可以是 fxtwitter 或 fixupx 。 |
original_url_button |
即將推出 |
參數 | 描述 |
---|---|
default_message |
全域設定預設的訊息格式,格式和自定義訊息相同,使用f-字串並支援4個特殊變數。相關細節請參考指令。 |
python bot.py
🔧機器人權限設定 2147666944
- 讀取訊息(Read Messages/View Channels)
- 發送訊息(Send Messages)
- 嵌入連結(Embed Links)
- 附加檔案(Attach Files)
- 提及 @everyone、@here 和所有身分組(Mention Everyone)
- 使用應用程式命令(Use Slash Commands)
Note
如果想將機器人架到伺服器上,這裡推薦一個基本免費的服務:fly.io。 (更新:fly.io已停止向新用戶提供免費的方案)
Tip
或是你可以試試這個由台灣學生提供的虛擬主機服務: FreeServer
⚙️如果你使用fly.io的話你可能會需要的一些配置檔案
- dockerfile
FROM python:3.11.11
WORKDIR /bot
COPY requirements.txt /bot/
RUN pip install -r requirements.txt
COPY . /bot/
CMD python bot.py
- fly.toml
app = "你的APP名稱"
primary_region = "你的APP地區"
[env]
DATA_PATH = "/data"
[mounts]
source = "你的APP的VOLUME名稱"
destination = "/data"
現在你可以回到Discord,並使用 /add notifier
指令來設置你想要接收更新的Twitter用戶!
感謝所有貢獻者。
這個專案也受益於為我們提供標誌的藝術家的創意貢獻。