Quiz pour les bots sur Twitch.tv
Comme vous le savez, il y a des bots sur Twitch.tv. Je ne parle pas de «mauvais» robots pour tromper les téléspectateurs ou le chat, mais des robots qui permettent à un streamer d'ajouter l'une ou l'autre fonctionnalité à un flux ou à un chat pendant un flux. Parmi les plus célèbres d'entre eux: Moobot, Nightbot et MirRobot. Ce dernier sera discuté. Mirrobot est écrit par notre compatriote et inclut à juste titre le nombre de robots les plus populaires. L'une de ses fonctionnalités, qui est très demandée, est de mener un quiz dans le chat. L'essence du quiz MirRobot: avec une certaine fréquence, le bot pose une question au public dans le chat. Si dans un certain temps, personne ne peut répondre correctement, le bot donne des indices indiquant le nombre de lettres dans la réponse et révélant quelques lettres (selon le principe de «Potence» ou «Champs de miracles»).Exemple de gameplay de quiz:Dès que quelqu'un répond correctement, alors, d'une part, il est bien fait, et, d'autre part, le bot se souvient que c'est ce spectateur qui a répondu correctement. Une liste des téléspectateurs qui ont donné les réponses les plus correctes aux questions du quiz est également disponible dans le chat sur une équipe spéciale. Pour chaque chaîne, cette liste est différente.L'idée
Une fois, en essayant de trouver des réponses à des questions arbitraires sur Internet, je me suis souvenu du quiz sur Twitch et j'ai décidé d'essayer de créer un bot qui participerait au quiz seul. Il est également devenu intéressant pour moi de savoir ce qui se passerait si le même joueur était en haut du quiz sur des canaux complètement différents. Cela provoquera-t-il des soupçons auprès du public ou du développeur? Quelle sera la réaction? Ou peut-être que quelqu'un a déjà fait un bot avant moi, et qu'il n'y a plus de vraies personnes dans le top?La première version de travail du bot a été écrite pendant la nuit des vacances de mai. Le bot a pu se connecter au canal souhaité sur Twitch, analyser le chat, reconnaître quand une question de quiz apparaît dans le chat et rechercher la réponse sur Internet.Malheureusement, nous n'avons pas pu trouver immédiatement un service normal qui pourrait répondre à des questions arbitraires en russe. Google et Yandex ne conviennent pas à ces fins, car ils ne donnent pas de réponse toute faite, mais des liens vers des pages sur Internet qui doivent au moins être analysées de manière minimale. Pour une personne, une telle analyse n'est pas un problème, mais comment en faire une voiture est une tâche distincte. Idéalement, je cherchais quelque chose de similaire à Wolfram Alpha, mais avec un support pour la langue russe. Soit dit en passant, si quelqu'un a à l'esprit, un tel service ouvert - écrivez dans les commentaires.Implémentation
Pour le quiz sur Twitch, il s'est avéré suffisant de rechercher des réponses sur l'un des nombreux sites dédiés aux mots croisés, aux mots de passe et à d'autres jeux similaires. En principe, après avoir essayé plusieurs sites similaires, j'ai choisi celui sur lequel apparaissait le format le plus simple de la page de résultats de recherche. Pour l’avenir, je dirai qu’il s’est avéré que la base principale de MirRobot est composée de ces «questions de mots croisés». L'efficacité de l'algorithme pour les questions pédagogiques générales s'est avérée assez élevée (70%) et, ayant écrit ce bot fonctionnel au tout début, nous n'avons plus eu à y revenir.Après une série d'améliorations, le bot a pu: - Jouez avec succès au quiz simultanément sur plusieurs canaux de discussion.
- Trouvez indépendamment de nouvelles chaînes sur lesquelles MirRobot a été allumé et il y avait un nombre minimum de téléspectateurs.
- Maintenez votre base de données de réponses correctes aux questions afin de ne pas compter sur l'efficacité de la recherche sur le réseau et de pouvoir répondre à des questions spécifiques sur les jeux informatiques.
- Gardez une trace du haut des participants au quiz sur les canaux et tenez compte de leur position dans le haut pour décider de la réponse;
- Reconnectez-vous en cas de déconnexion d'Internet.
- Vérifiez la correspondance de votre réponse attendue et des invites dans le quiz.
- Travaillez de manière totalement autonome: hébergez dans un cloud PaaS, envoyez les analyses nécessaires sur le Web pour surveiller et maintenir une base de données dans DBaaS.
- Simulez le chat avec une mention personnelle (cette fonctionnalité a été implémentée beaucoup plus tard).
- Simulez le rythme et la manière de réagir d'une personne.
Ce qui n'a pas fonctionné ou n'a pas été mis en œuvre pour diverses raisons:- La détection de l'interdiction du bot dans le chat sur le canal n'est pas implémentée.
- Il y avait deux bugs ennuyeux que je n'ai pas pu corriger. Dans le cas de leur détection, le bot a simplement redémarré.
Technologies utilisées:- Python 3 (environ 1 000 lignes de code).
- IRC (le chat Twitch est en fait un chat IRC).
- Serveuse / Flacon pour l'interface web.
- MongoDB (mlab.com).
- PaaS IBM Bluemix.
En conséquence, la pleine indépendance du bot a été atteinte. Un défi mondial a été relevé. Les 2 derniers mois, le bot a fonctionné de manière autonome.Bot vs human

La capacité de ne pas se démarquer était la plus importante pour le bon fonctionnement du bot. C'était assez facile d'apprendre au bot à répondre aux questions. Sur la base de ses capacités techniques, dans la plupart des cas, le bot est capable de répondre à la question du quiz dans la première seconde, mais cela soulève immédiatement des soupçons: la personne n'est pas quelque chose pour taper la réponse, elle n'a même pas le temps de lire toute la question pendant ce temps. Une autre caractéristique est qu'une personne ne répond pas aussi rapidement à différentes questions: à des questions simples - rapidement, à des questions complexes pas très. Par conséquent, si vous mettez simplement un certain retard sur la réponse, il s'avère que les participants en direct «cliquent» sur des questions simples, et le bot répondra magistralement à toutes les questions complexes. Un tel «savant», qui donne les bonnes réponses à des questions spécialisées complètement différentes, attirera immédiatement l'attention sur vous.Je n'ai pas commencé à mettre en œuvre une évaluation de la «complexité» de la question.Dans la capture d'écran du groupe de l'un des streamers, ils s'indignent de ceux qui recherchent des réponses au quiz sur Google:En conséquence, afin de ne pas se démarquer parmi les téléspectateurs ordinaires, nous avons dû réduire considérablement la probabilité que le bot réponde correctement: - Introduisez une règle pour donner des réponses dans pas plus de 30 à 40% des cas.
- Augmentez le délai avant d'essayer de répondre (valeur aléatoire).
- Dans certains cas, donnez les bonnes réponses, malgré le fait que quelqu'un vient de donner la bonne réponse, créant l'illusion qu'une personne écrit sur le chat.
Le résultat de telles «optimisations» (il est étrange d'appeler «optimisation» une diminution de l'efficacité) est que sur l'une des chaînes très populaires avec plusieurs milliers de téléspectateurs en direct et des questions de quiz avec une fréquence de 1-2 minutes, le bot a gagné en moyenne 5-7 fois dans le quiz par heure. Pour les chaînes sur lesquelles l'activité des téléspectateurs en direct était faible, la probabilité de gagner du bot recherchait simplement la probabilité de base d'une réponse (20-30%).Dans le même temps, une telle sous-estimation de l'efficacité du bot a permis un peu de «conscience claire». Il s'est avéré que le bot a répondu peu et principalement dans les cas où il n'y avait personne parmi le public qui connaîtrait la bonne réponse. On peut dire que le bot rivalisait avec des «googleurs», c'est-à-dire avec ceux qui ne connaissaient pas immédiatement la réponse, tentaient de la trouver sur Internet, ou ne pouvaient deviner qu'après quelques conseils.Bien sûr, avec une telle efficacité, le bot ne pouvait pas rivaliser à courte distance avec les participants en direct du quiz, ce qui pouvait facilement donner la bonne réponse avant le bot. En regardant les statistiques du bot à l'avenir dans le contexte du changement dans le sommet, il était clair qu'un joueur actif en direct pour une période de temps limitée donne des réponses plus correctes que le bot. Parfois, sur le canal très actif, le bot peut ne pas être autorisé à donner la bonne réponse pendant une heure et demie à deux heures. Cet état de fait s'est avéré acceptable: le bot n'a pas donné beaucoup de réponses correctes, n'a importuné personne dans le chat avec sa participation et n'a pas éveillé les soupçons, mais s'est régulièrement déplacé vers le quiz supérieur, car, contrairement à une personne, il ne s'est pas reposé, n'a pas dormi, n'a pas dérangé fatigué, et a régulièrement participé à chaque flux.
À un moment donné, j'ai «vissé» le moteur de chat du bot au bot afin qu'il puisse répondre aux messages privés et essayer d'imiter complètement une personne. Le moteur, à en juger par les articles sur Internet, s'est très bien montré dans les tests de Turing. Bien sûr, Twitch a ses propres spécificités de chat: par exemple, vous devez filtrer les messages des émoticônes uniquement. Mais bien souvent, il était possible de maintenir l'illusion, et parfois les dialogues s'avéraient assez drôles. C'était un peu gênant que parfois le bot traîne l'interlocuteur et se présente comme une fillette de 10 ans, mais dans l'ensemble le problème de communication était résolu.Avez-vous remarqué le bot?
Le fait que le bot soit en haut en même temps près de 50 chaînes, personne ne l'a remarqué. Ici, à mon avis, la grande fragmentation des groupes d'audience, ainsi que le fait que sur environ 2 000 chaînes où MirRobot est utilisé, le quiz n'était inclus que dans quelques centaines. Si nous parlons de chaînes où il y avait un quiz et où il y avait au moins quelques dizaines de personnes dans le chat, alors il y avait ~ 160 de ces chaînes, et la plupart d'entre elles étaient des flux rares irréguliers ou des chaînes avec moins de 50 téléspectateurs (ce qui était spécifiquement exclu ), ou des chaînes sur lesquelles ils n'ont expérimenté que brièvement un questionnaire. Il y avait littéralement quelques chaînes actives avec un «grand» dessus, qui ne pouvaient pas être saisies, et le quiz sur elles était déjà désactivé depuis longtemps, mais l'ancien sommet est resté.Le graphique ci-dessous montre que le bot est régulièrement entré en haut de différents canaux:En revanche, le bot a été remarqué sur les chaînes où il y a très peu d'activité dans le chat. Cela comprenait à la fois les chaînes où il y a tout simplement peu de téléspectateurs et les chaînes où les téléspectateurs se sont retrouvés avec un petit nombre de personnes «en direct». Sur plusieurs canaux, le bot a été envoyé à l'interdiction. D'après ce que j'ai compris, ce qui l'a trahi était:- Il n'a pas répondu aux appels arbitraires qui lui étaient adressés dans des messages privés et dans le chat général. En utilisant le moteur de chat bot, j'ai implémenté bien plus tard que le début du projet.
- Sur les canaux 24 heures sur 24 - 24 heures sur 24 était présent et répondait périodiquement dans un chat.
Et les autres?
De nombreuses personnes recherchent simplement des réponses sur Google. Ils n'aiment pas ces gens dans le chat et se battent même activement contre eux.Donc, à un moment donné, l'auteur du bot vient de commencer à remplacer certaines lettres de la question par des lettres anglaises similaires, ce qui a vraiment compliqué la recherche. Google et les sites avec des bases de données de questions ne savent pas comment gérer un tel charabia. Yandex fait face à de telles demandes, ce qui a laissé à Google au moins quelques chances. En ce qui concerne le bot, la mise à jour de l'algorithme d'analyse n'a pas été un gros problème.C'est comme une confrontation éternelle entre un bouclier et une épée. Vous ne pouvez obtenir un avantage que dans un court laps de temps.Étonnamment, il s'est avéré qu'il existe d'autres robots ou scripts automatiques pour jouer au quiz! Au moins une fois, j'ai vu dans un chat que quelqu'un d'un compte complètement nouveau a répondu au quiz littéralement dans la seconde suivant la question.Il y avait ceux qui ne pouvaient pas être identifiés sans condition comme un bot ou un script. Néanmoins, concernant plusieurs surnoms, à en juger par plusieurs facteurs, j'étais sûr à 90% qu'une sorte d'automatisation était utilisée. Voici un exemple du journal de tous les messages d'un participant suspect sur un canal pendant 6 heures:Ce qui peut être remarqué par ce journal:- Tous les messages sont très courts et sans rapport. Il s'agit d'une tentative de donner des réponses au quiz. En plus d'essayer de répondre dans le chat en quelques heures, il n'y avait rien de ce participant. Autrement dit, une personne n'écrit plus rien dans le chat.
- Tous les messages sont en majuscules et il n'y a pas de fautes de frappe.
- , . (, ) .
- 3–5 , 1–1,5 . , - , .
Le journal donné est très atypique pour une personne vivante. Tout est aggravé par le fait que pour ce participant un tel comportement est observé non seulement une soirée, mais pendant 7 jours consécutifs. De plus, cette étude a été enregistrée récemment - début septembre, probablement uniquement pour un quiz.J'ai même essayé de leur parler personnellement sur ce sujet, mais aucun dialogue intelligible n'a eu lieu. Que ces personnes utilisent un bot, une sorte d'aide partiellement automatisée ou simplement s'asseoir sur des flux toute la nuit pour jouer à un quiz - avec une probabilité de 100%, il est impossible de déterminer. Cette question est toujours ouverte.Y avait-il un avantage?
Il était possible d'obtenir quelque chose, mais non, il n'y avait aucun avantage. Tout d'abord, l'essence de l'expérience était de ne pas obtenir de prix. Deuxièmement, les prix n'en valaient pas la peine.Par exemple, sur l'une des chaînes, un concours hebdomadaire est organisé au cours duquel les meilleurs répondants reçoivent de l'or dans World of Tanks. En fin de compte, le bot a fait irruption dans le sommet et a pu recevoir des prix. Il s'est avéré plus tard simplement en recherchant le surnom utilisé dans le moteur de recherche, qui pointait vers les messages de la communauté correspondante.Quelques statistiques
- Temps de travail: 4 mois
- Les bonnes réponses ont été données: ~ 8 000 (en moyenne 60 à 70 par jour)
- Collecté dans notre propre base de données de questions et réponses: ~ 83 000 (total des questions du quiz 110 000)
- Situé dans le top ~ 50 chaînes (à partir de 160 avec un quiz)
- Interdit sur au moins 3 canaux
Conclusion et conclusions
C'était intéressant? - Oui. La révélation a été que quelqu'un a également automatisé le jeu-questionnaire.Était-ce utile? - Oui, mais seulement comme le développement de la technologie et la création de quelque chose de nouveau.PS. Jusqu'à présent, le bot continue de fonctionner en mode automatique. Nous supposons que l'expérience n'a pas encore atteint son stade final. Donc, si vous vous battez dans le quiz intellectuel, tendez le gyrus, assurez-vous que vous n'êtes pas confronté à un script intelligent. Source: https://habr.com/ru/post/fr397521/
All Articles