Buat bot obrolan dengan mudah untuk Twitch.tv
Instal melalui NPM
$ npm install twitch-bot
const TwitchBot = require ( 'twitch-bot' )
const Bot = new TwitchBot ( {
username : 'Kappa_Bot' ,
oauth : 'oauth:dwiaj91j1KKona9j9d1420' ,
channels : [ 'twitch' ]
} )
Bot . on ( 'join' , channel => {
console . log ( `Joined channel: ${ channel } ` )
} )
Bot . on ( 'error' , err => {
console . log ( err )
} )
Bot . on ( 'message' , chatter => {
if ( chatter . message === '!test' ) {
Bot . say ( 'Command executed! PogChamp' )
}
} )
connected
join
part
message
timeout
subscription
ban
error
close
join()
)part()
say()
timeout()
ban()
close()
connected - ()
Event ini dikeluarkan ketika bot telah terhubung ke server IRC.
Bot . on ( 'connected' , ( ) => ... )
join - ()
Acara ini dikeluarkan ketika saluran berhasil bergabung.
Bot . on ( 'join' , channel => ... )
part - ()
Peristiwa ini dipancarkan ketika saluran berhasil ditinggalkan.
Bot . on ( 'part' , channel => ... )
message - (chatter: Object)
Dipancarkan ketika acara PRIVSMSG
dikirim melalui IRC. Atribut objek obrolan dapat ditemukan di situs pengembang Twitch
Bot . on ( 'message' , chatter => ... )
{ color : '#3C78FD' ,
display_name : 'kritzware' ,
emotes : '88:18-25' ,
id : 'c5ee7248-3cea-43f5-ae44-2916d9a1325a' ,
mod : true ,
room_id : 44667418 ,
sent_ts : 1501541672959 ,
subscriber : true ,
tmi_sent_ts : 1501541673368 ,
turbo : false ,
user_id : 44667418 ,
user_type : 'mod' ,
badges : { broadcaster : 1 , subscriber : 0 } ,
channel : '#kritzware' ,
message : 'This is a message PogChamp' ,
username : 'Kritzware' }
timeout - (event: Object)
Dipancarkan ketika waktu pengguna dalam obrolan habis. Atribut ban_reason
bernilai null
jika tidak ada pesan alasan yang digunakan.
kritzware: "/timeout {user} {duration} {reason}"
Bot . on ( 'timeout' , event => ... )
{ ban_duration : 10 , // seconds
ban_reason : 'Using a banned word' ,
room_id : 44667418 ,
target_user_id : 37798112 ,
tmi_sent_ts : 1503346029068 ,
type : 'timeout' ,
channel : '#kritzware' ,
target_username : 'blarev' }
subscription - (event: Object)
Dipancarkan ketika pengguna berlangganan saluran dan memilih untuk berbagi langganan dalam obrolan.
Bot . on ( 'subscription' , event => ... )
{
"badges" : {
"broadcaster" : 1 ,
"staff" : 1 ,
"turbo" : 1
} ,
"channel" : "#dallas" ,
"color" : "#008000" ,
"display_name" : "ronni" ,
"emotes" : null ,
"id" : "db25007f-7a18-43eb-9379-80131e44d633" ,
"login" : "ronni" ,
"message" : "Great stream -- keep it up!" , // null if no message given
"mod" : 0 ,
"msg_id" : "resub" ,
"msg_param_months" : 6 ,
"msg_param_sub_plan" : "Prime" ,
"msg_param_sub_plan_name" : "Prime" ,
"room_id" : 1337 ,
"subscriber" : 1 ,
"system_msg" : "ronni has subscribed for 6 months!" ,
"tmi_sent_ts" : 1507246572675 ,
"turbo" : 1 ,
"user_id" : 1337 ,
"user_type" : "staff"
}
ban - (event: Object)
Dipancarkan ketika pengguna diblokir secara permanen dari obrolan. Atribut ban_reason
bernilai null
jika tidak ada pesan alasan yang digunakan.
Bot . on ( 'ban' , event => ... )
kritzware: "/ban {user} {reason}"
{ ban_reason : 'Using a banned word' ,
room_id : 44667418 ,
target_user_id : 37798112 ,
tmi_sent_ts : 1503346078025 ,
type : 'ban' ,
channel : '#kritzware' ,
target_username : 'blarev' }
error - (err: Object)
Dipancarkan ketika terjadi kesalahan pada saluran Twitch IRC, atau ketika mencoba menyambung ke saluran.
Login authentication failed
Kesalahan ini terjadi ketika nama pengguna atau oauth kedutan Anda salah/tidak valid.
Tanggapan:
{ message: 'Login authentication failed' }
Improperly formatted auth
Kesalahan ini terjadi ketika kata sandi oauth Anda tidak diformat dengan benar. Format yang valid adalah "oauth:your-oauth-password-123"
.
Tanggapan:
{ message: 'Improperly formatted auth' }
Your message was not sent because you are sending messages too quickly
Kesalahan ini terjadi ketika pesan gagal terkirim karena pengiriman pesan terlalu cepat. Anda dapat menghindari hal ini dengan menjadikan bot sebagai moderator di saluran, jika berlaku/diizinkan.
Tanggapan:
{ message : 'Your message was not sent because you are sending messages too quickly' }
Bot . on ( 'error' , err => ... )
{ message : 'Some error happened in the IRC channel' }
close - ()
Peristiwa ini terjadi ketika koneksi irc dimusnahkan melalui metode Bot.close()
.
Bot . on ( 'close' , ( ) => {
console . log ( 'closed bot irc connection' )
} )
join(channel: String)
Mencoba bergabung dengan saluran. Jika berhasil, keluarkan acara 'gabung'.
Bot . on ( 'join' , channel => {
console . log ( `Bot joined ${ channel } ` )
} )
Bot . join ( 'channel2' )
part(channel: String)
Mencoba berpisah dari saluran. Jika berhasil, keluarkan acara 'bagian'.
Bot . on ( 'part' , channel => {
console . log ( `Bot left ${ channel } ` )
} )
Bot . part ( 'channel2' )
say(message: String, channel: []Channel, err: Callback)
Kirim pesan di saluran Twitch yang saat ini terhubung. parameter channels
tidak diperlukan saat terhubung ke satu saluran. Panggilan balik opsional disediakan untuk memvalidasi apakah pesan telah dikirim dengan benar.
Bot . say ( 'This is a message' )
Bot . say ( 'Pretend this message is over 500 characters' , err => {
sent : false ,
message : 'Exceeded PRIVMSG character limit (500)'
ts : '2017-08-13T16:38:54.989Z'
} )
// If connected to multiple channels
Bot . say ( 'message to #channel1' , 'channel1' )
Bot . say ( 'message to #channel2' , 'channel2' )
timeout(username: String, channel: []Channel, duration: int, reason: String)
Batas waktu pengguna dari obrolan. parameter channels
tidak diperlukan saat terhubung ke satu saluran. duration
default adalah 600 detik. Pesan reason
opsional.
Bot . timeout ( 'kritzware' , 10 )
// "kritzware was timed out for 10 seconds"
Bot . timeout ( 'kritzware' , 5 , 'Using a banned word' )
// "kritzware was timed out for 5 seconds, reason: 'Using a banned word'"
Bot . on ( 'message' , chatter => {
if ( chatter . message === 'xD' ) Bot . timeout ( chatter . username , 10 )
} )
ban(username: String, reason: String)
Blokir pengguna dari obrolan secara permanen. parameter channels
tidak diperlukan saat terhubung ke satu saluran. Pesan reason
opsional.
Bot . ban ( 'kritzware' )
// "kritzware is now banned from the room"
Bot . timeout ( 'kritzware' , 'Using a banned word' )
// "kritzware is now banned from the room, reason: 'Using a banned word'"
Bot . on ( 'message' , chatter => {
if ( chatter . message === 'Ban me!' ) Bot . ban ( chatter . username )
} )
close()
Menutup koneksi Twitch irc. Bot akan dihapus dari saluran Twitch DAN server irc.
Bot . close ( )
Menjalankan rangkaian pengujian memerlukan setidaknya dua akun twitch, satu akun moderator, dan satu akun normal. Channel yang digunakan harus sama - Ini agar metode timeout/ban dapat diuji dengan akun mod. Dengan menggunakan dua akun ini, tetapkan variabel lingkungan berikut:
TWITCHBOT_USERNAME = mod_username
TWITCHBOT_OAUTH = oauth : mod - oauth - token
TWITCHBOT_CHANNEL = mod_channel
TWITCHBOT_USERNAME_NON_MOD = non_mod_username
TWITCHBOT_OAUTH_NON_MOD = oauth : non - mod - oauth - token
TWITCHBOT_CHANNEL_NON_MOD = mod_channel
Untuk menjalankan tes (didukung dengan Mocha), gunakan perintah berikut:
yarn test