[PYTHON] Exécutons la commande à temps avec le bot discord

Le point


Qu'est-ce que discord.py

Discord a Bot Development Library for Many Languages et une bibliothèque pour python [discord.py](https :: //pypi.org/project/discord.py/).


Je l'ai essayé

Utilisez discord.py pour créer un bot qui peut être utilisé lors du recrutement de quêtes de jeu en ligne et de confrontations d'adversaires, et utilisez-le pendant environ un mois. Je l'ai vu, alors je vais l'écrire sous forme d'article.


Spécifications générales


Ensemble de code

Cliquez ici pour le code plutôt que la théorie. https://github.com/coleyon/discord-partypoll


Quel genre de fonction?

En gros, c'est un Bot qui comprend les deux fonctions suivantes.


De quel genre d'environnement s'agit-il?

Bot en tant que programme Python est configuré pour s'exécuter sur un conteneur Docker.

aws_vpc_design-Page-3.png


Environnement


Préparez le serveur et le système d'exploitation

Par exemple, configurez ʻUbuntu 18.04 LTS x86-64` sur EC2. Le niveau gratuit est suffisant. image.png


Installez l'environnement du serveur Docker

Installez docker et composez.


Installez l'environnement du serveur Docker

Je pense que ça ressemble à ça.

$ docker --version
Docker version 19.03.12, build 48a66213fe
$ docker-compose --version
docker-compose version 1.27.2, build 18f557f9
$ id
uid=1000(ubuntu) gid=1000(ubuntu),
#Omission...
,999(docker)
$ 

Créer un conteneur Docker

$ git clone  https://github.com/coleyon/discord-partypoll.git
Cloning into 'discord-partypoll'...
...
Resolving deltas: 100% (136/136), done.
$ cd discord-partypoll/
$ docker-compose build
$ docker images | grep partypoll
discord-partypoll_discord-bot  latest ...
$ 

Inviter Bot sur le serveur Discord


Créer une application Discord

Créez une application sur le portail des développeurs (https://discord.com/developers/applications). image.png


Définir le jeton OAuth2 du bot dans le programme Bot

Obtenez le Client Secret dans le menu Informations générales de l'application et définissez-le sur DISCORD_BOT_TOKEN dans docker-compose.yml.

version: "3"
services:
  discord-bot:
    restart: always
    build: .
    environment: 
      DISCORD_BOT_TOKEN: "yourtoken"

Inviter Bot sur le serveur Discord

Depuis le menu ʻOAuth2de l'application, récupérez l'URL OAuth2 où Scopes est BOT. Pour les permissions, donnezSend Messages, Manage Messages, ʻAttach Files, Mention Everyone, ʻAdd Reactions`.


Inviter Bot sur le serveur Discord

Accédez à l'URL OAuth2 dans votre navigateur et invitez le Bot sur le serveur Discord. image.png


Lancer le programme Bot


Générer des bibliothèques dépendantes pour les programmes Bot

Générez «requirements.yml» à partir de «Pipfile».

$ pipenv lock -r > requirements.txt

Lancer le programme Bot

Démarrez le programme Bot (conteneur Docker comme environnement d'exécution).

$ docker-compose up -d
$ docker-compose logs -f
Attaching to discord-partypoll_discord-bot_1
discord-bot_1  | -----Logged in info-----
discord-bot_1  | {BOT_NAME}
discord-bot_1  | {BOT_ID}
discord-bot_1  | {DISCORDPY_VERSION}
discord-bot_1  | ------------------------
discord-bot_1  | Poll Extension Enabled.
discord-bot_1  | Cron Extension Enabled.
^CERROR: Aborting.
$ 

Le lancement du programme Bot met le Bot sur Discord en ligne et prêt à être utilisé.


Essayez d'utiliser la commande de recrutement de groupe ppoll


Recrutement pouvant limiter le nombre total de recrutements

Cette commande recrute des groupes pour un total de 20 personnes maximum pour toute l'équipe. / ppoll total 20 personnes 3 équipes 20 TeamA TeamB TeamC image.png


Recrutement qui peut limiter le nombre de personnes pour chaque élément de recrutement

C'est une commande de recruter des groupes pour jusqu'à 4 personnes au total dans chaque équipe. / ppoll chacun 4 personnes 3 équipes [4] TeamA [4] TeamB [4] TeamC image.png


Commande d'aide

Voir la description de la commande / ppoll help ou le référentiel Git readme.md pour plus d'informations.


Essayez d'utiliser la commande d'exécution programmée cron


Spécification du fuseau horaire d'exécution

Vous pouvez définir le fuseau horaire d'exécution. La valeur par défaut est l'heure du Japon (Asie / Tokyo), mais vous pouvez la définir sur quelque chose comme l'heure de l'Est des États-Unis (EST). image.png


Définition et activation des tâches


Exemple d'opération de tâche

Ce sera comme ça. Voir la description de la commande / cron help ou le référentiel Git readme.md pour plus d'informations. image.png


Matériel de référence


Fondamentalement, Official Docs est la bible, mais les membres du jeu en ligne ont présenté les livres suivants au cours de la fabrication.

Quand je l'ai lu, c'était très facile à comprendre et c'était utile car il y avait beaucoup de contenu que je ne pouvais pas saisir dans le manuel officiel, donc il est recommandé pour ceux qui sont intéressés par la création de Discord Bot.

Recommended Posts

Exécutons la commande à temps avec le bot discord
Créez un bot qui ne renvoie que le résultat de l'analyse morphologique avec MeCab avec Discord
Modifions automatiquement la palette de couleurs d'iTerm2 en fonction de l'heure de la journée
Au moment de la mise à jour de python avec ubuntu
Exécuter la capture de paquets à l'heure spécifiée sur CentOS7
L'histoire de l'arrêt du service de production avec la commande hostname
Supprimons maintenant l'ambiguïté du trait d'union (-) de la commande su! !!
[Linux] Exécutez périodiquement git pull avec la commande crontab
Créez un BOT qui raccourcit l'URL Discord
Exécuter une commande sur le serveur Web et afficher le résultat
Faisons un robot Discord.
Obtenez UNIXTIME au début d'aujourd'hui avec une commande
Vérifiez l'état de la mémoire du serveur avec la commande gratuite Linux
Touchons l'API de Netatmo Weather Station avec Python. #Python #Netatmo
Vérifiez l'état de fonctionnement du serveur avec la commande Linux top
Reformatez l'axe des temps du graphique de la série chronologique des pandas avec matplotlib
Donnez une date et une heure à la commande d'historique et collectez les fichiers d'historique de tous les utilisateurs avec un script
[Terminé] bot qui publie une notification du début de la diffusion en direct de Nico Nico sur Discord sur discord.py
Jusqu'au début du tutoriel django avec pycharm sous Windows
J'ai essayé de créer un Discord Bot sur Docker qui signale le nombre de personnes infectées par corona à Tokyo à un moment spécifié
Visualisons le nombre de personnes infectées par le virus corona avec matplotlib
Utilisons rapidement l'expression distribuée des mots avec fastText!
[Concept] bot qui publie une notification du début de la diffusion en direct de Nico Nico en direct sur Discord sur discord.py
L'histoire de la création d'un bot de boîte à questions avec discord.py
Obtenez le nom d'hôte du PC hôte avec Docker sous Linux
Lire les coordonnées du tracé sur le graphe avec Python-matplotlib (super débutant)
Comment est le progrès? Continuons le boom ?? en Python
Mesurez la couverture de test du code python poussé sur GitHub.
Sous Linux, l'horodatage d'un fichier est un peu dépassé.
Discord Bot avec fonction d'enregistrement commençant par Python: (5) Exploitez directement l'API Discord
J'ai étudié avec Kaggle Start Book basé sur kaggle [Partie 1]
Comment surveiller l'état d'exécution de sqlldr avec la commande pv
Résumons le degré de couplage entre les modules avec du code Python
Une commande pour vérifier facilement la vitesse du réseau sur la console
J'ai vérifié l'image de l'Université des sciences sur Twitter avec Word2Vec.
Achèvement de la commande docker sous Linux
Traiter le résultat de% time,% timeit
[DISCORD BOT] Aide sur les commandes du gestionnaire de serveur
Frappez la commande supérieure avec htop
Décidons le gagnant du bingo
Jetons un coup d'œil à l'incendie de forêt sur la côte ouest des États-Unis avec des images satellites.
Mettez à jour les données en les téléchargeant sur s3 d'aws avec une commande, et supprimez les données utilisées (en chemin)
Obtenez la largeur du div côté serveur avec Selenium + PhantomJS + Python
L'histoire de la création d'un robot LINE pour le petit-déjeuner d'une université de 100 yens avec Python
Modifiez le fichier du serveur de destination de la connexion SSH sur le serveur avec VS Code
J'ai essayé de mesurer le temps d'attente de la file d'attente d'exécution d'un processus sous Linux
Lire le commentaire de la vidéo de Nico Nico sur le terminal en conjonction avec la vidéo
L'option --security ne peut pas être utilisée avec la commande dnf sous CentOS Linux
Préparer l'environnement de Chainer sur l'instance spot EC2 avec AWS Lambda
L'histoire de la tentative de pousser SSH_AUTH_SOCK obsolète avec LD_PRELOAD à l'écran
Tweet la météo avec bot
Continuez à recevoir RSS sur la ligne de commande
Demandez Pi avec la commande bc
Alignez la taille de la barre de couleurs avec matplotlib
Affinons les hyper paramètres du modèle avec scikit-learn!
Résolvons le portefeuille avec une optimisation continue
Exécuter le script Python avec TS-220 cron