Personal profile (You're here): @KararTY
School profile: @Karar-Al
Work profile: @AlRemahy
Announces on Discord when Twitch channels go live.
License: MIT License
Make the bot fetch the thumbnail then upload it to discord. Then use that image URL in the embed so when looking back in announcements it's more relevant to what was happening in that stream.
Also prevents the caching problem where it shows an old thumbnail
{ error: 'Unauthorized',
status: 401,
message: 'OAuth token is missing' }
I get an error called help description
Hello,
first of all thank you for this easy-mode announcer ;) the issue i'm having is that no matter what prefix is used (eg: = or ! or ~) all commands work. Could you be so kind to provide information how can the prefix be controlled - even better how can be controlled for every other channel which the bot is listening to.
Thank you in advance
Update the README to include the new commands added
Any plans to update this to use Oauth? Twitch is discontinuing authentication by the current methods.
Add ability for bot to automatically post reactions once an announcement has been sent.
Something that's not neccessary, but I find would be a cool addition to the bot
!help does not work for membes currect
hello,
I'm getting these errors sometimes and the bot is unable to announce the streaming or in the "best case" is delayed (between 5 to even 40 minutes).
Initially I thought the problem was the host, but even after change it these errors still appears sporadically.
Do you have any clues/suggestions on how to solve it?
Is this a possibility or will the only way to use this bot is hosting it multiple times for each server.
Would be nice to be able to host this once and make it announce for different streamers in different servers. Not sure if that's your goal with this project though, was just curious if it's something you'll consider
Something small, but it'd be cool if you could set the status message for the bot in the settings.
Thanks
Hello, is there a command to have the list of streamers that are added to the advertiser. Or will there be this command in the future?
Using the most recent versions of everything including node-fetch.
I've been getting consistent timeouts with the bot for the past 6 hours. Twitch API status page is not showing any issues. Token should be valid until Jan 15.
Error received with multiple different channel names replaced with "channel":
FetchError: request to https://api.twitch.tv/helix/streams?user_login=channel&user_login=channel&user_login=channel&user_login=channel&user_login=channel&user_login=channel&user_login=channel&user_login=channel&user_login=channel&user_login=channel&user_login=channel&user_login=channel&user_login=channel&user_login=channel&user_login=channel&user_login=channel&user_login=channel&user_login=channel&user_login=channel&user_login=channel&user_login=channel failed, reason: connect ETIMEDOUT 151.101.186.214:443
at ClientRequest.<anonymous> (H:\Streambot Oauth\node_modules\node-fetch\lib\index.js:1461:11)
at ClientRequest.emit (events.js:315:20)
at TLSSocket.socketErrorListener (_http_client.js:463:9)
at TLSSocket.emit (events.js:315:20)
at emitErrorNT (internal/streams/destroy.js:\100:8)
at emitErrorCloseNT (internal/streams/destroy.js:68:3)
at processTicksAndRejections (internal/process/task_queues.js:84:21) {
type: 'system',
errno: 'ETIMEDOUT',
code: 'ETIMEDOUT'
}
If someone in that list deactivates their channel or changes their name would it cause a timeout? Or is something else going on that I'm unaware of?
Hello, would it be possible to have 2 lists of streamers for 2 different shows?
For example, a list for the main streamer with his channel, and a list for the streamer's friends with a channel for them.
Changing the !message
only modifies the contents of settings.json
. And data.json
stays the same... And it seems the bot reads from data.json for the message. So it doesn't change at all when announcing the message.
Hopefully that's made some sense.
When Name is contain character like $%!%!@,. Bot Crashes !
Idea: Recording in a .log file of each interaction with the bot per server.
hey again ;)
not really big issue, but i've got additional module included which sets bot's status (ex. DND/Online/Away - not the Rich Presence thing) and once your bot loads, it's temporary sets the status to Online. Then again, if i switch the announcer off, the activity is properly changed.
any idea what might causes it?
Allow people to change the language of the bot.
Add a followage command on discord (example: !Followage My_Pseudo Ninja)
The avatar on Twitch can be added to the announcement
Prevent the bot from resending an announcement if the bot has been restarted.
It should check if it has already sent an announcement previously and if it has, it shouldn't resend it.
Be able to check the uptime of the bot, and possibly the ping too.
Useful to know when the bot goes offline without having to ssh into the server to check pm2 etc
Just something that would be a nice addition
Thanks
would be possible to re-introduce the bot status (watching/playing/streaming/listening) with the last commit?
Option to allocate & only allow a specific user to control the bot.
There should be an option in settings.js to specify a user
I started the bot and work.. he says Logged into Discord. Activity has been set. [LISTENING] Twitch API.
But when i type !help for a list command
`/home/peppe/Scrivania/DiscordTwitchAnnouncer-master/app.js:811
} else if (message.member.hasPermission((settings.discord.permissionForCommands || 'MANAGE_ROLES'), false, true, true)) {
^
TypeError: message.member.hasPermission is not a function
at Client. (/home/peppe/Scrivania/DiscordTwitchAnnouncer-master/app.js:811:31)
at Client.emit (node:events:526:28)
at MessageCreateAction.handle (/home/peppe/Scrivania/DiscordTwitchAnnouncer-master/node_modules/discord.js/src/client/actions/MessageCreate.js:26:14)
at Object.module.exports [as MESSAGE_CREATE] (/home/peppe/Scrivania/DiscordTwitchAnnouncer-master/node_modules/discord.js/src/client/websocket/handlers/MESSAGE_CREATE.js:4:32)
at WebSocketManager.handlePacket (/home/peppe/Scrivania/DiscordTwitchAnnouncer-master/node_modules/discord.js/src/client/websocket/WebSocketManager.js:351:31)
at WebSocketShard.onPacket (/home/peppe/Scrivania/DiscordTwitchAnnouncer-master/node_modules/discord.js/src/client/websocket/WebSocketShard.js:444:22)
at WebSocketShard.onMessage (/home/peppe/Scrivania/DiscordTwitchAnnouncer-master/node_modules/discord.js/src/client/websocket/WebSocketShard.js:301:10)
at WebSocket.onMessage (/home/peppe/Scrivania/DiscordTwitchAnnouncer-master/node_modules/discord.js/node_modules/ws/lib/event-target.js:199:18)
at WebSocket.emit (node:events:526:28)
at Receiver.receiverOnMessage (/home/peppe/Scrivania/DiscordTwitchAnnouncer-master/node_modules/discord.js/node_modules/ws/lib/websocket.js:1137:20)`
Some of my friend says me because it for old node... idk, can u help me?
!test command for when setting up the bot.
If the stream isn't live it should send out using a placeholder img if the stream isn't live already.
Not necessary but a nice addition if it'd be easy to implement, very useful for setting up the bot and making sure everything's working fine before pushing it out
would be useful if the bot can generates a log.txt file with date and time of any actions and errors, so in case of malfunction we can attach that file and report here; is it something feasible?
{ "noDiscordToken": "Aucun Token Discord n'a été fourni.", "noTwitchClientID": "Aucun Client ID Twitch n'a été fourni.", "includeTwitchClientSecret": "Si vous effectuez une mise à jour à partir d'une version précédente, assurez-vous que le champ 'twitch.clientSecret' existe dans settings.js.", "noTwitchClientSecret": "Aucun Client Secret Twitch n'a été fourni.", "createdDataJSON": "data.json. crée avec succès.", "usingExistingToken": "Utilisation du token existant. Le token expire le %s.", "missmatchToken": "Le Client ID ne correspond pas au Client Secret Twitch, Vérifiez vos Client ID et Client Secret!", "invalidTokenResponse": "Réponse non valide, Vérifiez vos Token!", "wroteTokenToDisk": "Votre Token vient d'être écrit dans un fichier. REMARQUE: NE PARTAGEZ token.json AVEC PERSONNE!", "genericTokenError": "Une erreur s'est produite lors de la tentative d'obtention du Token Twitch OAuth, vérifiez votre Client ID et votre Client Secret dans settings.js!", "genericDataJSONErrorRetry": "Quelque chose ne va pas avec votre fichier data.json! Nouvelle tentative dans 1 minute...", "disconnectedDiscord": "Apparemment, Discord est déconnecté. Les flux Twitch ne sont pas verifié. Nouvelle tentative dans 3 secondes...", "noTwitchChannels": "Pas de chaînes Twitch. Ajoute-en!", "announcedStreams": "Annonce réussie de tous les streams.", "throttledByTwitch": "Limité par Twitch! Augmentez la minuterie dans settings.js et redémarrez!", "twitchThrottleMessage": "\nErreur Twitch: %s", "streamStarted": "Live démarré ", "unknownGame": "jeu inconnu", "inGuild": "Sur le serveur ", "announcedInOverAtGuild": "Nouvelle annonce: %s Dans: %s Sur: %s", "announcementChannelDoesNotExist": "Impossible d'annoncer un live. Le channel d'annonce, %s n'existe pas sur le serveur %s", "addedGuild": "Nouveau serveur Discord ajoutée à la liste !", "removedGuild": "Suppression d'un serveur Discord de la liste !", "loggedIntoDiscord": "Connecté à Discord.", "activityHasBeenSet": "L'activité a été définie.", "reconnectingToDiscord": "Reconnexion à Discord...", "reconnectedToDiscord": "Reconnecté à Discord. Tout fonctionne.", "includeCooldownTimerWarning": "Une mise à jour récente a introduit un temps de recharge pour chaque annonce, afin de réduire le spam pendant les « flux IRL », veuillez ajouter « cooldownTimer : 21600000 » dans votre fichier settings.json. Temps de recharge de 6 heures pour le moment.", "twitchError": "Quelque chose s'est mal passé avec votre demande Twitch: %1", "commands": { "help": { "triggers": ["help", "h"], "helpText": "
%1help (Remplacez <commande> par une commande pour obtenir de l'aide avec une commande spécifique.)", "availableCommands": "Commandes disponibles", "message": "**Commandes d'aide:** " }, "uptime": { "triggers": ["uptime", "timeup", "online"], "helpText": "
%1uptime(Affiche le temps de fonctionnement du Bot.)", "message": "Est en ligne depuis", "hoursComma": "heures,", "minutesAnd": "minutes et", "seconds": "secondes", "onlineSince": "En ligne depuis" }, "add": { "triggers": ["add", "+"], "helpText": "%1
%2add Nom_Du_Streamer(Ajoute un streamer Twitch au Bot.)", "gameInfoName": "(DEMO) Le nom du jeu", "streamInfoTitle": "(DEMO) Le titre du stream", "streamInfoType": "(DEMO) LIVE/VOD/REDIFF...", "alreadyExists": "existe déjà!", "message": "https://www.twitch.tv/%1 ajouté au Bot.", "addAnnouncementChannel": "N'oubliez pas d'ajouter un salon textuel d'annonce avec
!channel #channelName.", "doesNotExist": "https://www.twitch.tv/%1 n'existe pas!" }, "remove": { "triggers": ["rem", "remove", "-", "del", "delete"], "helpText": "%1
%2remove Nom_Du_Streamer(Supprime un flux Twitch de l'annonceur.)", "doesNotExist": "n'existe pas!", "message": "a supprimé le streamer du Bot." }, "channel": { "triggers": ["ch", "chn", "channel"], "helpText": "%1
%2channel #%3ou %1
%2channel %4(**Obligatoire!** Salon textuel pour les annonces.)", "message": "changed announcement channel.", "noPermissionsForChannel": "ne peut pas poster dans ce salon textuel. Modifiez les autorisations ou choisissez un autre salon textuel." }, "operator": { "triggers": ["op", "operator"], "helpText": "%1
%2operator <@%3>(Ajoute un administrateur au Bot.)", "message": "%1 operator.", "noPermission": "Seul le propriétaire du serveur peut ajouter et/ou supprimer des opérateurs." }, "reaction": { "triggers": ["react", "reaction"], "helpText": "%1
%2réaction 👍(Ajoute une réaction sur le message d'annonce.)", "message": "%1 réaction." }, "timezone": { "triggers": ["tz", "timezone"], "helpText": "%1
%2timezone sv-SE Europe/Stockholm(Vérifier __IANA BCP 47 Subtag registry__ <https://www.iana.org/assignments/language-subtag-registry/language-subtag-registry> & __IETF RFC 5646__ <https://tools.ietf.org/html/rfc5646> pour les tags locales et __IANA Time Zone Database__ <https://www.iana.org/time-zones> & __Wikipedia__ <https://en.wikipedia.org/wiki/List_of_tz_database_time_zones> pour les fuseaux horaires.)", "message": "L'heure sera désormais affichée sous la forme: %1" }, "message": { "triggers": ["msg", "message"], "helpText": "%1
%2message @everyone %name% %status%, avec %game%: %title%(Modifier le message d'annonce du flux. Si *<NomDuStreamer>* est rempli, cela changera le message d'annonce de ce streamer. Assurez-vous de retirer le
<>. Supporte *%name%* pour le nom du streamer, *%status%* pour le type de stream (VOD, LIVE, REDIFF), *%game%* pour le titre du jeu et *%title%* pour le titre du stream, *%link%* pour le lien du stream.)", "message": "Message d'annonce modifié.", "messageStreamer": "Message d'annonce modifié pour le streamer %1." }, "prefix": { "triggers": ["pfx", "prefix"], "helpText": "%1
%2prefix !(Modifie le préfixe de commande du bot.)", "message": "Le préfixe est maintenant
%1." }, "language": { "triggers": ["lang", "language"], "helpText": "%1
%langues français(Modifie la langue du bot.)\n**Langues disponibles:** %3", "languageDoesNotExit": "Cette langue n'existe pas!\n**Langues disponibles:** %1", "message": "Modification de la langue en
%1!" }, "announcementChannel": { "triggers": ["ac", "announcementchannel"], "helpText": "%1
%2announcementchannel Nom_Du_Streamer #%3ou %1
%2announcementchannel Nom_Du_Streamer %4 (Modifie le salon textuel d'annonce pour le streamer spécifié.)", "message": "changement du salon textuel d'annonce pour ce streamer.", "noPermissionsForChannel": "ne peut pas poster dans ce salon textuel. Modifiez les autorisations ou choisissez un autre salon textuel.", "streamerDoesNotExist": "le streamer n'existe pas!", "announcementChannel": "%1's le salon textuel d'annonce est %2" }, "streamers": { "triggers": ["streamers", "list", "liste"], "helpText": "Affiche la liste des streamers ajoutés.", "message": "**Liste des streamers ajoutés:** \n%1" } }, "example": "(Exemple)", "added": "ajouté(e)", "removed": "supprimé" }
Doing !timezone
or !operator
and maybe other commands too causes the bot to crash if you don't input anything after. Instead it should tell you what the commands do.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.