我們在 Twitch 上為 Coding Cafe 建造了這個舒適的 Twitch 聊天模組!
特別感謝: Comfy.JS 的實現得益於 @AlcaDesign 維護的 tmi.js
Comfy.JS讓您只需幾行程式碼即可超級輕鬆地與 Twitch 頻道的 Twitch 聊天整合。這是一個 3 分鐘的快速視頻,介紹如何使用它:(點擊圖片打開視頻)
喜歡這些項目嗎?支持我的開源專案的最佳方式是成為 GitHub 上的舒適贊助商!
https://github.com/sponsors/instafluff
快來和我們一起在 Twitch 上最舒適的角落閒逛吧!
https://twitch.tv/instafluff
comfy.js
npm install comfy.js --save
var ComfyJS = require ( "comfy.js" ) ;
ComfyJS . onCommand = ( user , command , message , flags , extra ) => {
if ( flags . broadcaster && command === "test" ) {
console . log ( "!test was typed in chat" ) ;
}
}
ComfyJS . Init ( "MyTwitchChannel" ) ;
dist
資料夾下載並新增comfy.js
或從 JSDelivr CDN 包含: < script src = "comfy.min.js" > < / script >
或者
< script src = "https://cdn.jsdelivr.net/npm/comfy.js@latest/dist/comfy.min.js" > < / script >
< html >
< head >
< script src =" https://cdn.jsdelivr.net/npm/comfy.js@latest/dist/comfy.min.js " > </ script >
</ head >
< body >
< script type =" text/javascript " >
ComfyJS . onCommand = ( user , command , message , flags , extra ) => {
if ( flags . broadcaster && command === "test" ) {
console . log ( "!test was typed in chat" ) ;
}
}
ComfyJS . Init ( "MyTwitchChannel" ) ;
</ script >
</ body >
</ html >
目前, onCommand()
和onChat()
中可能的標誌有:
目前, onCommand()
的extra
參數包含以下欄位:
如果訊息是命令, extra
參數將包含附加欄位:
其中包含自上次任何使用者或特定使用者使用相同指令以來的時間段資訊(以ms
為單位)。此欄位可以方便地用於設定全域冷卻時間或垃圾郵件過濾器。請參閱下面的範例:
ComfyJS . onChat = ( user , message , flags , self , extra ) => {
if ( flags . broadcaster && command === "test" ) {
if ( extra . sinceLastCommand . any < 100 ) {
console . log (
`The last '!test' command by any user was sent less than 100 ms ago`
) ;
}
if ( extra . sinceLastCommand . user < 100 ) {
console . log (
`The last '!test' command by this specific user (as denoted by the 'user' parameter) was sent less than 100 ms ago`
) ;
}
}
}
您可以使用onChat()
處理程序讀取聊天訊息
ComfyJS . onChat = ( user , message , flags , self , extra ) => {
console . log ( user , message ) ;
}
發送聊天訊息可以透過ComfyJS.Say( message )
完成,但在連線聊天時需要 OAUTH 密碼。
dotenv
npm install dotenv --save
.env
的文件,如下所示: TWITCHUSER = [ YOUR - USERNAME - HERE ]
OAUTH = [ YOUR - OAUTH - PASS HERE ] # e . g . OAUTH = oauth : kjh12bn1hsj78445234
var ComfyJS = require ( "comfy.js" ) ;
ComfyJS . onCommand = ( user , command , message , flags , extra ) => {
if ( command === "test" ) {
ComfyJS . Say ( "replying to !test" ) ;
}
}
ComfyJS . Init ( process . env . TWITCHUSER , process . env . OAUTH ) ;
您可以透過在Init()
中指定來加入不同的頻道或頻道群組
ComfyJS . Init ( "MyTwitchChannel" , null , "ChannelToJoin" ) ;
ComfyJS . Init ( "MyTwitchChannel" , null , [ "ChannelA" , "ChannelB" , "ChannelC" ] ) ;
頻道點獎勵兌換需要額外的 Twitch OAuth 權限範圍(並且必須是頻道所有者的 OAuth !)
您可以使用此工具:https://twitchapps.com/tokengen/
範圍: channel:manage:redemptions channel:read:redemptions user:read:email chat:edit chat:read
ComfyJS . onReward = ( user , reward , cost , message , extra ) => {
console . log ( user + " redeemed " + reward + " for " + cost ) ;
}
Comfy.JS 包含管理通道點獎勵的功能。這些函數需要用於取得頻道的 Twitch OAuth 密碼的 ClientID。
( clientId, manageableOnly = true )
( clientId, rewardInfo )
( clientId, rewardId, rewardInfo )
( clientId, rewardId )
let channelRewards = await ComfyJS . GetChannelRewards ( clientId , true ) ;
let customReward = await ComfyJS . CreateChannelReward ( clientId , {
title : "Test Reward" ,
prompt : "Test Description" ,
cost : 100 ,
is_enabled : true ,
background_color : "#00E5CB" ,
is_user_input_required : false ,
is_max_per_stream_enabled : false ,
max_per_stream : 0 ,
is_max_per_user_per_stream_enabled : false ,
max_per_user_per_stream : 0 ,
is_global_cooldown_enabled : false ,
global_cooldown_seconds : 0 ,
should_redemptions_skip_request_queue : true
} ) ;
let updatedReward = await ComfyJS . UpdateChannelReward ( clientId , customReward . id , {
title : "Test Reward (Updated)" ,
prompt : "Updated Description" ,
cost : 200 ,
is_enabled : true ,
} ) ;
await ComfyJS . DeleteChannelReward ( clientId , customReward . id ) ;
您可以使用Disconnect()
中斷與伺服器和所有通道的連線。
ComfyJS . Disconnect ( ) ;
( user, command, message, flags, extra )
( user, message, flags, self, extra )
( user, message, flags, self, extra )
( id, extra )
( user, reward, cost, message, extra )
( user, self, extra )
( user, self, extra )
( user, viewers, autohost, extra )
( bannedUsername, extra )
( timedOutUsername, durationInSeconds, extra )
( user, viewers, extra )
( user, message, bits, flags, extra )
( user, message, subTierInfo, extra )
( user, message, streamMonths, cumulativeMonths, subTierInfo, extra )
( gifterUser, streakMonths, recipientUser, senderCount, subTierInfo, extra )
( gifterUser, numbOfSubs, senderCount, subTierInfo, extra )
( user, sender, extra )
( address, port, isFirstConnect )
( reconnectCount )
( error )
感謝本計畫的所有參與者!
Instafluff、Instafriend、Neo_TA、ChatTranslator、fydo、That_MS_Gamer、MrRayKoma、Amarogine、HunWalk、simrose4u、sparky_pugwash、soggycoffee、blackdawn1980、BooobieTrap、iirdeen、Trapers、Sv週、Sv週、Sv週、Tkrapsrap、Sv週、Svvt、Htass、Htalktras、tadykh、Tirk、Tirk、Trapyk、Tirk、Trapyk、Tirk、Trapy 、DutchGamer46、 erService、BungalowGlow、koralina_211、TominationTime、 itDeke、fd_god92、SushiDay、FlyToto_、Docpinecone、katori15、ScrtSolstice、QeraiX、superravemonster、Jwh1o1、Deitypotato、Stobie、Chiousk99、tehWokes、rogSuperhuahua、FranFranFalahua、FranFal12、FFalcoal、Fircoal、Firkalkald nardian、年,Chibigirl24,DR4G0N_S4MUR41, PokemoHero、rekaj3773、cunavrito、TheGeekGeneration、DevMerlin、julieee22、malfunct、blazeninja3、pookiepew、xxMiabellexx、Rlchibi
感謝所有幫助將 Comfy.JS 變成瀏覽器模組的人!
Instafluff、Instafriend、ChatTranslator、Gilokk0、qbotv3、That_MS_Gamer、KitAnnLIVE、simrose4u、MacabreMan2、LuRiMer313、sparky_pugwash、AbbyFabby、sethorizer、julieee22、Numb5壓力測試、BungalowGlow 博士、 _零,NiteCrawla ,fd_god92, DrEriksen、codeheir、Talk2meGooseman、sneelps、cottonsmiles、DutchGamer46、LilyHazel、Kyoslilmonster、guthron、DragosNox、sciondragons、HonestDanGames、Gelideeal、MerlinKWelid、Funids、Gelimels、Gelimcoss、Gillas、G每個cons份、Kelimima、ielelimi份、Kelimels、Gimels份、Kimeler、Gimelimi份、Kimeler、Gimelimi份、Kielimiii、Kelimimhis、Gimim 注意、Kelimimi 注意) 、DevMerlin、CrimsonKnightZero、 ellie_pop、ItsNaomiArt 、SomaPills、 ntoon、JesseSkinner、roberttables、pookiepew、Lannonbr 、SoG_Cuicui、 Deitypotato、shalomhanukkahbneishimon、UpmostKek、xeiu、skatesubzero、kingswerv、K1ng440、kaisuke、kinbiko、malfunct、BooobieTrap、Kara_Kim
感謝所有參與將 Twitch PubSub 對頻道點獎勵兌換支持添加到 Comfy.JS 的人!
Instafluff、Instafriend、informathemusic、aRandomTim、shadesofpixie、That_MS_Gamer、ToeNeeHee、httpJunkie、ryanchetty_1、calguru、chrislocality、Atanerah、rekaj3773、moshiko777、Firk、AnnaS、Smod、Firk、Makb、Munkk、M5ak 、Simpathey、 Spationaute、DjDesidera、JupiterZky、 judybelle1、Shaezonai、shineslove、airsickmammal、walaber、jellydance、LilyHazel、PainArtist、Nickloop_TTV、VerbatimStudios、silversurfer1989、BellaTriXrbsa、holloway87、Asherroth86、Tiwesday、notn_m、Mr. 、wabes1、jeckle、opti_21、 Sparky_pugwash 。 karatewump、DrillsKibo、florinpop17、Axell99Design、 Ahmed_Riad_1 、Keegan_GDiegen、PortaalGaming、mjewl、cheppy4444dude、Soccerdude4444、klforthwind、penguinian、10TenArt、Atndesign、DNIStream、LoveSudoNimh、prosto_artem27、lucasnramos、A_Nin、LoveS. otMoe、tbdgamer、MatthewDGroves、dota2attitude、mistersyntax、SekaCakes、 llamakid29 、CryptoCoyote、MurdocTurner、JeanValjean80、walpolea、Jessi8712、butschibuuuu、Cmiley6、TheFlamingWings、hehe24h、cryogen_sw、DrJavaSaurus、rota22_、julieee22、bronick16、Scrtstice、ghostAmos、Rghost、RunDakf.