diff --git a/.env.sample b/.env.sample index eda1323..a3005c5 100644 --- a/.env.sample +++ b/.env.sample @@ -1,5 +1,7 @@ API_URL=test-url ACCESS_TOKEN=test -API_URL_FR=test-url1 +VISIBILITY=unlisted +VISIBILITY_FR=private ACCESS_TOKEN_FR=test1 +VISIBILITY_EN=private ACCESS_TOKEN_EN=test2 \ No newline at end of file diff --git a/.eslintrc.json b/.eslintrc.json new file mode 100644 index 0000000..bc28534 --- /dev/null +++ b/.eslintrc.json @@ -0,0 +1,30 @@ +{ + "env": { + "node": true + }, + "extends": "eslint:recommended", + "globals": { + "Atomics": "readonly", + "SharedArrayBuffer": "readonly" + }, + "parserOptions": { + "ecmaVersion": 2018 + }, + "rules": { + "indent": [ + "error", + 2, + { + "SwitchCase": 1 + } + ], + "quotes": [ + "error", + "single" + ], + "semi": [ + "error", + "never" + ] + } +} \ No newline at end of file diff --git a/database.json b/database.json index 498cfa8..aea9cca 100644 --- a/database.json +++ b/database.json @@ -169,234 +169,234 @@ }, { "EN": "Being around you makes everything better!", - "FR": + "FR": "Tout va mieux quand tu es tout près de moi !" }, { "EN": "When you say, “I meant to do that,” I totally believe you.", - "FR": + "FR": "Quand tu dis 'Voilà ce que je vais faire', j’ai envie de le faire avec toi." }, { "EN": "When you’re not afraid to be yourself is when you’re most incredible.", - "FR": + "FR": "Tu es incroyable quand tu n’as pas peur d’être toi-même." }, { "EN": "Colors seem brighter when you’re around.", - "FR": + "FR": "Ta seule présence ravive les couleurs du quotidien." }, { "EN": "You’re more fun than a ball pit filled with candy. (And seriously, what could be more fun than that?)", - "FR": + "FR": "Tu es plus chouette qu’un énorme paquet de chamallows." }, { "EN": "That thing you don’t like about yourself is what makes you so interesting.", - "FR": + "FR": "C’est ce que tu n’aimes pas chez toi qui te rend une personne intéressante." }, { "EN": "You’re wonderful.", - "FR": + "FR": "Tu es une merveille." }, { "EN": "Everyday is just BLAH when I don’t see you For reals! (awesome – you are halfway through the list. You’re awesome!)", - "FR": + "FR": "Chaque jour est tristounet quand je ne te vois pas en vrai !" }, { "EN": "Jokes are funnier when you tell them.", - "FR": + "FR": "Les blagues sont bien plus drôles quand c’est toi qui les racontes." }, { "EN": "You’re better than a triple-scoop ice cream cone. With sprinkles.", - "FR": + "FR": "Tu es un tel délice que les glaces à la framboise me paraissent fades." }, { "EN": "Your bellybutton is kind of adorable.", - "FR": + "FR": "Même ton nombril est tout à fait mignon." }, { "EN": "Your hair looks stunning.", - "FR": + "FR": "Ta chevelure est magnifique." }, { "EN": "You’re one of a kind!", - "FR": + "FR": "Tu te distingues vraiment du lot !" }, { "EN": "You’re inspiring.", - "FR": + "FR": "Tu es pour tout le monde une source d’inspiration." }, { "EN": "If you were a box of crayons, you’d be the giant name-brand one with the built-in sharpener.", - "FR": + "FR": "Si tu étais un crayon de couleur, tu pourrais dessiner l’arc-en-ciel d’un seul trait." }, { "EN": "You should be thanked more often. So thank you!!", - "FR": + "FR": "Tout le monde peut te remercier. Merci pour tout ce que tu es !" }, { "EN": "Our community is better because you’re in it.", - "FR": + "FR": "Notre communauté est bien meilleure grâce à toi." }, { "EN": "Someone is getting through something hard right now because you’ve got their back.", - "FR": + "FR": "En ce moment, une personne surmonte ses difficultés grâce à ton aide et ton soutien." }, { "EN": "You have the best ideas.", - "FR": + "FR": "Tes idées sont les meilleures." }, { "EN": "You always know how to find that silver lining.", - "FR": + "FR": "Tu t’arranges toujours pour trouver le meilleur en chacun." }, { "EN": "Everyone gets knocked down sometimes, but you always get back up and keep going.", - "FR": + "FR": "Tout le monde peut avoir un petit coup de blues, mais avec toi on surmonte cette épreuve." }, { "EN": "You’re a candle in the darkness.", - "FR": + "FR": "Tu es comme une lumière dans l’obscurité de nos vies." }, { "EN": "You’re a great example to others.", - "FR": + "FR": "Tu es un exemple pour tout le monde." }, { "EN": "Being around you is like being on a happy little vacation.", - "FR": + "FR": "Quand on est près de toi, c’est comme si on était en vacances." }, { "EN": "You always know just what to say.", - "FR": + "FR": "Tu sais toujours comment réagir face aux problèmes." }, { "EN": "You’re always learning new things and trying to better yourself, which is awesome.", - "FR": + "FR": "Tu as tellement soif d’apprendre et tu progresses tellement que tu es formidable." }, { "EN": "If someone based an Internet meme on you, it would have impeccable grammar.", - "FR": + "FR": "Si on devait faire un mème pour Internet avec toi, ce serait avec tes paroles de sagesse." }, { "EN": "You could survive a Zombie apocalypse.", - "FR": + "FR": "Tu peux survivre à toutes les apocalypses." }, { "EN": "You’re more fun than bubble wrap.", - "FR": + "FR": "Tu es beaucoup plus drôle que les humoristes professionnels." }, { "EN": "When you make a mistake, you fix it.", - "FR": + "FR": "Tu sais reconnaître tes erreurs et apprendre à mieux faire." }, { "EN": "Who raised you? They deserve a medal for a job well done.", - "FR": + "FR": "Tes parents méritent d’être récompensés de t’avoir mis⋅e au monde." }, { "EN": "You’re great at figuring stuff out.", - "FR": + "FR": "Tu sais fort bien démêler les affaires compliquées." }, { "EN": "Your voice is magnificent.", - "FR": + "FR": "Ta voix est mélodieuse." }, { "EN": "The people you love are lucky to have you in their lives.", - "FR": + "FR": "Les personnes que tu aimes ont bien de la chance !" }, { "EN": "You’re like a breath of fresh air.", - "FR": + "FR": "Ton souffle est une brise de printemps." }, { "EN": "You’re gorgeous — and that’s the least interesting thing about you, too.", - "FR": + "FR": "Tu es splendide, mais c’est la moindre de tes qualités." }, { "EN": "You’re so thoughtful.", - "FR": + "FR": "Tu es une personne réfléchie et fiable." }, { "EN": "Your creative potential seems limitless.", - "FR": + "FR": "Ton potentiel créatif paraît sans limites." }, { "EN": "You’re the coolest person I know. And I consider myself bet friends with like all celebrities, so. . . .", - "FR": + "FR": "Tu es la personne la plus géniale que je connaisse. Et je connais pourtant beaucoup de personnes très sympas…" }, { "EN": "You’re irresistible when you blush.", - "FR": + "FR": "Tu es irrésistible quand tu rougis." }, { "EN": "Actions speak louder than words, and yours tell an incredible story.", - "FR": + "FR": "Les actes valent mieux que les mots, et tes actes le prouvent chaque jour." }, { "EN": "Somehow you make time stop and fly at the same time.", - "FR": + "FR": "Avec toi le temps passe tellement vite qu’on ne s’ennuie jamais." }, { "EN": "When you make up your mind about something, nothing stands in your way.", - "FR": + "FR": "Quand tu as pris une décision, rien ne peut plus t’arrêter." }, { "EN": "You seem to really know who you are.", - "FR": + "FR": "Tu as l’air de savoir vraiment ce que tu veux." }, { "EN": "Any team would be lucky to have you on it.", - "FR": + "FR": "Toutes les associations et clubs voudraient bien que tu les rejoignes." }, { "EN": "In high school I bet you were voted “most likely to keep being awesome.”", - "FR": + "FR": "Tu étais sûrement la personne la plus populaire pendant tes études, tu l’es toujours aujourd’hui.”" }, { "EN": "I bet you do the crossword puzzle in ink.", - "FR": + "FR": "Je parie que tu termines les mots croisés en 5 minutes." }, { "EN": "Babies and small animals probably love you.", - "FR": + "FR": "Je parie que les chiens et les chats viennent spontanément près de toi avec amour." }, { "EN": "If you were a scented candle they’d call it Perfectly Imperfect (and it would smell like summer).", - "FR": + "FR": "Si tu étais un parfum on t’appellerait 'Fleurs d’été'." }, { "EN": "There’s ordinary, and then there’s you.", - "FR": + "FR": "Il y a les gens ordinaires, et puis il y a toi." }, { "EN": "You’re someone’s reason to smile.", - "FR": + "FR": "Tu donnes envie de sourire quand on te voit." }, { "EN": "You’re even better than a unicorn, because you’re real.", - "FR": + "FR": "Tu vaux bien mieux qu’une licorne parce que tu existes vraiment." }, { "EN": "How do you keep being so funny and making everyone laugh?", - "FR": + "FR": "Comment tu fais pour être si drôle et faire rire autour de toi ?" }, { "EN": "You have a good head on your shoulders.", - "FR": + "FR": "Tu as la tête sur les épaules en toutes circonstances." }, { "EN": "Has anyone ever told you that you have great posture?", - "FR": + "FR": "On t’a déjà dit à quel point ton allure est impressionnante ?" }, { "EN": "The way you treasure your loved ones is incredible.", - "FR": + "FR": "Tu es incroyable avec les personnes que tu aimes." }, { "EN": "You’re really something special.", - "FR": + "FR": "Tu es vraiment une personne très spéciale." }, { "EN": "You’re a gift to those around you.", - "FR": + "FR": "Ta présence est un cadeau pour celles et ceux qui t’entourent." } ] \ No newline at end of file diff --git a/database_fr_2.json b/database_fr_2.json deleted file mode 100644 index edef70e..0000000 --- a/database_fr_2.json +++ /dev/null @@ -1,60 +0,0 @@ -[ -"Tout va mieux quand tu es tout près de moi !", -"Quand tu dis 'Voilà ce que je vais faire', j’ai envie de le faire avec toi.", -"Tu es incroyable quand tu n’as pas peur d’être toi-même.", -"Ta seule présence ravive les couleurs du quotidien.", -"Tu es plus chouette qu’un énorme paquet de chamallows.", -"C’est ce que tu n’aimes pas chez toi qui te rend une personne intéressante.", -"Tu es une merveille.", -"Chaque jour est tristounet quand je ne te vois pas en vrai !", -"Les blagues sont bien plus drôles quand c’est toi qui les racontes.", -"Tu es un tel délice que les glaces à la framboise me paraissent fades.", -"Même ton nombril est tout à fait mignon.", -"Ta chevelure est magnifique.", -"Tu te distingues vraiment du lot !", -"Tu es pour tout le monde une source d’inspiration.", -"Si tu étais un crayon de couleur, tu pourrais dessiner l’arc-en-ciel d’un seul trait.", -"Tout le monde peut te remercier. Merci pour tout ce que tu es !", -"Notre communauté est bien meilleure grâce à toi.", -"En ce moment, une personne surmonte ses difficultés grâce à ton aide et ton soutien.", -"Tes idées sont les meilleures.", -"Tu t’arranges toujours pour trouver le meilleur en chacun.", -"Tout le monde peut avoir un petit coup de blues, mais avec toi on surmonte cette épreuve.", -"Tu es comme une lumière dans l’obscurité de nos vies.", -"Tu es un exemple pour tout le monde.", -"Quand on est près de toi, c’est comme si on était en vacances.", -"Tu sais toujours quoi répondre face aux problèmes.", -"Tu as tellement soif d’apprendre et tu progresses tellement que tu es formidable.", -"Si on devait faire un mème pour Internet avec toi, ce serait avec tes paroles de sagesse.", -"Tu peux survivre à toutes les apocalypses.", -"Tu es beaucoup plus drôle que les humoristes professionnels.", -"Tu sais reconnaître tes erreurs et apprendre à mieux faire.", -"Tes parents méritent d’être récompensés de t’avoir mis⋅e au monde.", -"Tu sais fort bien démêler les affaires compliquées.", -"Ta voix est mélodieuse.", -"Les personnes que tu aimes ont bien de la chance !", -"Ton souffle est une brise de printemps.", -"Tu es splendide, mais c’est la moindre de tes qualités.", -"Tu es une personne réfléchie et fiable.", -"Ton potentiel créatif paraît sans limites.", -"Tu es la personne la plus géniale que je connaisse. Et je connais pourtant beaucoup de personnes très sympas…", -"Tu es irrésistible quand tu rougis.", -"Les actes valent mieux que les mots, et tes actes le prouvent chaque jour.", -"Avec toi le temps passe tellement vite qu’on ne s’ennuie jamais.", -"Quand tu as pris une décision, rien ne peut plus t’arrêter.", -"Tu as l’air de savoir vraiment ce que tu veux.", -"Toutes les associations et clubs voudraient bien que tu les rejoignes.", -"Tu étais sûrement la personne la plus populaire pendant tes études, tu l’es toujours aujourd’hui.”", -"Je parie que tu termines les mots croisés en 5 minutes.", -"Je parie que les chiens et les chats viennent spontanément près de toi avec amour.", -"Si tu étais un parfum on t’appellerait 'Fleurs d’été'.", -"Il y a les gens ordinaires, et puis il y a toi.", -"Tu donnes envie de sourire quand on te voit.", -"Tu vaux bien mieux qu’une licorne parce que tu existes vraiment.", -"Comment tu fais pour être si drôle et faire rire autour de toi ?", -"Tu as la tête sur les épaules en toutes circonstances.", -"On t’a déjà dit à quel point ton allure est impressionnante ?", -"Tu es incroyable avec les personnes que tu aimes.", -"Tu es vraiment une personne très spéciale.", -"Ta présence est un cadeau pour celles et ceux qui t’entourent." -] diff --git a/index.js b/index.js index dc3a7fb..7ec20e1 100644 --- a/index.js +++ b/index.js @@ -4,26 +4,34 @@ const Mastodon = require('mastodon-api') const TOKEN = 'ACCESS_TOKEN' const URL = 'API_URL' +const VISIBILITY = 'VISIBILITY' Object.entries(process.env) .filter(e => e[0].startsWith(TOKEN)) .forEach(e => { const lang = e[0].substring(TOKEN.length + 1) + const visi = process.env[`${VISIBILITY}_${lang}`] || process.env[VISIBILITY] const M = new Mastodon({ access_token: process.env[`${TOKEN}_${lang}`] || process.env[TOKEN], - api_url: `${process.env[`API_URL_${lang}`] || process.env[URL]}/api/v1/`, + api_url: `${process.env[`${URL}_${lang}`] || process.env[URL]}/api/v1/`, timeout_ms: 60 * 1000 }) M.get('accounts/verify_credentials').then( - me => M.get(`accounts/${me.data.id}/followers`, { limit: 9999 }).then(fol => { - for (const follow of fol.data) { - const messages = database[Math.floor(Math.random() * database.length)] - const text = lang.length > 0 ? messages[lang] : '\n' + Object.entries(messages).map(m => `[${m[0]}] ${m[1]}`).join('\n\n') - - M.post('statuses', { status: `@${follow.acct} ${text}`, visibility: 'unlisted' }) + me => { + if (me.data.error) { + console.error(me.data.error) + return } + + M.get(`accounts/${me.data.id}/followers`, { limit: 9999 }).then(fol => { + for (const follow of fol.data) { + const messages = database[Math.floor(Math.random() * database.length)] + const text = lang.length > 0 ? messages[lang] : '\n' + Object.entries(messages).map(m => `[${m[0]}] ${m[1]}`).join('\n\n') + + M.post('statuses', { status: `@${follow.acct} ${text}`, visibility: visi }) + } + }) }) - ) })