لقد قمنا ببناء وحدة الدردشة المريحة Twitch مباشرة على Twitch for Coding Cafe!
شكر خاص: أصبح Comfy.JS ممكنًا بفضل tmi.js الذي تديره @AlcaDesign
يتيح لك Comfy.JS التكامل مع Twitch chat لقناة Twitch الخاصة بك بسهولة فائقة في بضعة أسطر من التعليمات البرمجية. إليك مقطع فيديو سريع مدته 3 دقائق حول كيفية استخدامه: (انقر على الصورة لفتح الفيديو)
مثل هذه المشاريع؟ أفضل طريقة لدعم مشاريعي مفتوحة المصدر هي أن تصبح راعيًا مريحًا على GitHub!
https://github.com/sponsors/instafluff
تعال واستمتع معنا في Comfiest Corner على 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" ) ;
comfy.js
وإضافته من مجلد dist
أو قم بتضمينه من 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()
هي:
حاليًا، تحتوي المعلمة extra
لـ onCommand()
على الحقول التالية:
إذا كانت الرسالة عبارة عن أمر، فستحتوي المعلمة 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, 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، lizardqueen، TastyGamers101، MalForTheWin، SourBeers، Stay_Hydrated_Bot، codeaurora، DutchGamer46، TheHungerService، BungalowGlow، koralina_211، TominatingTime،itsDeke، fd_god92، SushiDay، FlyToto_، Docpinecone، katori15، ScrtSolstice، QeraiX، superravemonster، Jwh1o1، Deitypotato، Stobie، Chlapicek99، tehWokes، SuperChihuahua، FranC312، FuriousFur، Moopaloo، CreativeBuilds، donaldwm، Zorchenhimer، Grognardian، ravavyr، Chibigirl24، DR4G0N_S4MUR41، PokemoHero، rekaj3773، cunavrito، TheGeekGeneration، DevMerlin، julieee22، malfunt، blazeninja3، pookiepew، xxMiabellexx، Rlchibi
شكرًا لكل من ساعد في تحويل Comfy.JS إلى وحدة متصفح!
Instafluff، Instafriend، ChatTranslator، Gilokk0، qbotv3، That_MS_Gamer، KitAnnLIVE، simrose4u، MacabreMan2، LuRiMer313، sparky_pugwash، AbbyFabby، sethorizer، julieee22، Numb3rY، Jwh1o1، Baileydale، kevkab، Stay_Hydrated_Bot، DrJavaSaurus، Stresstest، BungalowGlow، Dr_Zero، NiteCrawla، fd_god92، DrEriksen، codeheir، Talk2meGooseman، sneelps، Cottonsmiles، DutchGamer46، LilyHazel، Kyoslilmonster، Guthron، DragosNox، sciondragons، HonestDanGames، Xynal، MerlinLeWizard، FablesGames، BrainoidGames، donaldwm، Gharrotey، RIKACHET، HeyOhKei، DevMerlin، Crimson KnightZero، ellie_pop، ItsNaomiArt، SomaPills، TheSabbyLife، bktdakid31، IsaisChannel، thegooseofwild،itsDeke، bubbleandunicorns، geledance، MalForTheWin، Chibigirl24، Pearcington، RikuRinku، rockysenpai24، DEAD_P1XL، codeaurora، EndlessMoonfall، fromtheannex، Optik_Nerve، qerwtr546، REAZNxxx، GoonPontoon، JesseSkinner، roberttables، pookiepew، Lannonbr، SoG_Cuicui، Deitypotato، شالومهانوكاهبنيشيمون، أبموست كيك، زيو، سكيتسوبزيرو، كينغسويرف، K1ng440، كايسوكي، كينبيكو، مالفونكت، بووبي تراب، كارا_كيم
شكرًا لكل من انضم إلى إضافة دعم Twitch PubSub لعمليات استرداد مكافآت نقاط القناة إلى Comfy.JS!
Instafluff، Instafriend، informathemusic، aRandomTim، Shadeofpixie، That_MS_Gamer، ToeNeeHee، httpJunkie، ryanchetty_1، calguru، chrislocality، Atanerah، rekaj3773، moshiko777، fizhes، AnnaCodes، Smokestormx، TheGeekGeneration، SavenaV، KotaKlan، rosebutterfly24، Simpathey، Spationaute، DjDesidera، JupiterZky، judybelle1، Shaezonai، Shineslove، airsickmammal، walaber، Jeldance، LilyHazel، PainArtist، Nickloop_TTV، VerbatimStudios، Silversurfer1989، BellaTriXrbsa، Holloway87، Asherroth86، Tiwesday، not_your_point، JenDevelops، Tenaciousw، Cuicui_off، stevis5، aranhawaii، DevMerlin، wabes1، jeckle، opti_21، sparky_pugwash، tomunist_64، DutchGamer46، DoctorArgus، simrose4u، DreamGardenPanda، onelineofme، stuyksoft، Simployed، JustinZedly، Rhedone، DrMikachu، Gurkenkater، MrDemonWolf، saltipretzelz، MerlinLeWizard، Kurokirisu، Juscekame، FuriousFur، andresurrego، MissNightcrawler، karatewump، DrillsKibo، florinpop17، Axell99Design، Ahmad_Riad_1، Keegan_GDiegen، PortaalGaming، mjewl، cheppy4444dude، Soccerdude4444، klforthwind، penguinian، 10TenArt، Atndesign، DNStream، LoveSudoNimh، prosto_artem27، lucasnramos، A_Ninja_For_Jesus_Bruh، RedChrisMS، Lineyatronic، Totte292، A_Gold_Fish، ShiDotMoe، tbdgamer، MatthewDGroves، dota2attitude، mistersyntax، SekaCakes، llamakid29، CryptoCoyote، MurdocTurner، JeanValjean80، walpolea، Jessi8712،butschibuuuu، Cmiley6، TheFlamingWings، hehe24h، cryogen_sw، DrJavaSaurus، rota22_، julieee22، bronick16، ScrtSolstice، Ghostlupo86، Wake_the_beast، williamcameron2، GizmoPugLife، OG24com