Erstellen Sie ganz einfach Chatbots für Twitch.tv
Installation über 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 - ()
Dieses Ereignis wird ausgegeben, wenn der Bot eine Verbindung zum IRC-Server hergestellt hat.
Bot . on ( 'connected' , ( ) => ... )
join - ()
Dieses Ereignis wird ausgegeben, wenn einem Kanal erfolgreich beigetreten wurde.
Bot . on ( 'join' , channel => ... )
part - ()
Dieses Ereignis wird ausgegeben, wenn ein Kanal erfolgreich verlassen wurde.
Bot . on ( 'part' , channel => ... )
message - (chatter: Object)
Wird ausgegeben, wenn ein PRIVSMSG
Ereignis über IRC gesendet wird. Chatter-Objektattribute finden Sie auf der Twitch-Entwicklerseite
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)
Wird ausgegeben, wenn ein Benutzer im Chat eine Zeitüberschreitung hat. Das Attribut ban_reason
ist null
, wenn keine Begründungsmeldung verwendet wird.
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)
Wird ausgegeben, wenn ein Benutzer einen Kanal abonniert und sich dafür entscheidet, das Abonnement im Chat zu teilen.
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)
Wird ausgegeben, wenn ein Benutzer dauerhaft vom Chat ausgeschlossen wird. Das Attribut ban_reason
ist null
, wenn keine Begründungsmeldung verwendet wird.
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)
Wird ausgegeben, wenn Fehler im Twitch-IRC-Kanal auftreten oder wenn versucht wird, eine Verbindung zu einem Kanal herzustellen.
Login authentication failed
Dieser Fehler tritt auf, wenn entweder Ihr Twitch-Benutzername oder Ihr OAuth falsch/ungültig sind.
Antwort:
{ message: 'Login authentication failed' }
Improperly formatted auth
Dieser Fehler tritt auf, wenn Ihr OAuth-Passwort nicht richtig formatiert ist. Das gültige Format sollte "oauth:your-oauth-password-123"
sein.
Antwort:
{ message: 'Improperly formatted auth' }
Your message was not sent because you are sending messages too quickly
Dieser Fehler tritt auf, wenn eine Nachricht nicht gesendet werden kann, weil sie zu schnell gesendet wird. Sie können dies vermeiden, indem Sie den Bot zum Moderator im Kanal machen, sofern zutreffend/erlaubt.
Antwort:
{ 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 - ()
Dieses Ereignis wird ausgegeben, wenn die IRC-Verbindung über die Methode Bot.close()
zerstört wird.
Bot . on ( 'close' , ( ) => {
console . log ( 'closed bot irc connection' )
} )
join(channel: String)
Versucht, einem Kanal beizutreten. Bei Erfolg wird das „Join“-Ereignis ausgegeben.
Bot . on ( 'join' , channel => {
console . log ( `Bot joined ${ channel } ` )
} )
Bot . join ( 'channel2' )
part(channel: String)
Versuche, sich von einem Kanal zu trennen. Bei Erfolg wird das Ereignis „part“ ausgegeben.
Bot . on ( 'part' , channel => {
console . log ( `Bot left ${ channel } ` )
} )
Bot . part ( 'channel2' )
say(message: String, channel: []Channel, err: Callback)
Senden Sie eine Nachricht im aktuell verbundenen Twitch-Kanal. channels
wird nicht benötigt, wenn er mit einem einzelnen Kanal verbunden ist. Zur Überprüfung, ob die Nachricht korrekt gesendet wurde, wird ein optionaler Rückruf bereitgestellt.
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)
Timeout eines Benutzers aus dem Chat. channels
wird nicht benötigt, wenn er mit einem einzelnen Kanal verbunden ist. Die duration
beträgt 600 Sekunden. Optionale reason
.
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)
Einen Benutzer dauerhaft aus dem Chat verbannen. channels
wird nicht benötigt, wenn er mit einem einzelnen Kanal verbunden ist. Optionale reason
.
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()
Schließt die Twitch-IRC-Verbindung. Der Bot wird vom Twitch-Kanal UND vom IRC-Server entfernt.
Bot . close ( )
Zum Ausführen der Testsuite sind mindestens zwei Twitch-Konten, ein Moderatorkonto und ein normales Konto erforderlich. Der verwendete Kanal muss derselbe sein – so können Timeout-/Ban-Methoden mit dem Mod-Konto getestet werden. Legen Sie mithilfe dieser beiden Konten die folgenden Umgebungsvariablen fest:
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
Um die Tests (unterstützt mit Mocha) auszuführen, verwenden Sie den folgenden Befehl:
yarn test