[PYTHON] Ich habe einen Musik-Bot mit discord.py und der Google Drive-API erstellt (getestet mit Docker → bereitgestellt für Heroku).

Die verwendete Datei wird in hier abgelegt (ausgenommen authentifizierungsbezogen). Grundsätzlich habe ich es meinen Verwandten gemacht, es zu genießen.

Was du machen willst

  1. Senden Sie eine Nachricht auf Zwietracht
  2. Bot sucht nach Song-Dateien von Google Drive
  3. Wenn gefunden, laden Sie die Stimme herunter und spielen Sie mit ihr

Untitled Diagram.png

Es gibt auch zwei persönliche Anforderungen an den Musikbot:

――Sie können andere Songs als Sie selbst anfordern, wie Sie möchten

Ich entschied mich für Google Drive und Heroku, um diese Anforderungen zu erfüllen.

Umgebung

Verzeichnisaufbau

.
├── Procfile
├── citron.py
├── client_secrets.json
├── commands.py
├── requirements.txt
├── runtime.txt
└── token.pickle

Beschreibung jeder Datei

--citron.py: Bot Körper --commands.py: Liste der Befehle, auf die der Bot reagiert --client_secrets.json, token.pickle: Google Drive-Authentifizierung im Zusammenhang --Procfile, runtime.txt, require.txt: Erforderlich für die Heroku-Bereitstellung

Testumgebungskonstruktion (Docker-Container)

docker pull python:3.7
docker images
#Containererstellung
docker run -d -it --name python --mount type=bind,source=path/to/mydir,target=/home/ python:3.7

#Betritt den Container
docker exec -it python bash

#Die folgenden Operationen im Container
python3 -m pip install -U discord.py
pip install --upgrade google-api-python-client google-auth-httplib2 google-auth-oauthlib
apt update
apt -y upgrade
apt install ffmpeg

Ich habe nach Bedarf installiert, was ich brauchte, und schließlich wurde es so. Es ist mir egal, obwohl es unnötige Dinge enthalten kann.

requirements.txt


aiohttp==3.6.2
async-timeout==3.0.1
attrs==19.3.0
cachetools==4.0.0
certifi==2019.11.28
cffi==1.13.2
chardet==3.0.4
discord.py==1.3.0
google-api-python-client==1.7.11
google-auth==1.11.0
google-auth-httplib2==0.0.3
google-auth-oauthlib==0.4.1
httplib2==0.17.0
idna==2.8
multidict==4.7.4
oauth2client==4.1.3
oauthlib==3.1.0
pyasn1==0.4.8
pyasn1-modules==0.2.8
pycparser==2.19
PyDrive==1.3.1
PyNaCl==1.3.0
PyYAML==5.3
requests==2.22.0
requests-oauthlib==1.3.0
rsa==4.0
six==1.14.0
uritemplate==3.0.1
urllib3==1.25.8
websockets==8.1
yarl==1.4.2
youtube-dl==2020.1.24

Discord Bot https://discordapp.com/developers/applications/ Dieses Mal werde ich Yuzu bitten, DJ zu machen. スクリーンショット 2020-01-28 2.14.27.png

Produktionsumgebung (Heroku)

#Installieren Sie Heroku CLI
brew install heroku/brew/heroku

heroku login
#Anwendungserstellung
heroku create hoge
heroku open
#Bereitstellen
git init
heroku git:remote -a <Heroku App Name>
git add .
git commit -m "first commit"
git push heroku master

Es wurde ein Build Pack hinzugefügt, das auf [hier] verweist (https://qiita.com/coolwind0202/items/542761a1701c1176bc93). Screenshot 2020-01-28 3.06.39.png

Wo es stecken bleibt

Danach habe ich es stetig geschrieben, während ich mir das offizielle Dokument angesehen habe. Da es jedoch mit der Google Drive-Authentifizierung verstopft war, werde ich nur die Änderungen veröffentlichen.

#Vorher ändern
creds = flow.run_local_server(port=0)

#Nach der veränderung
creds = flow.run_console()

Ich habe mich gefragt, ob es sich um Tests mit Docker oder um etwas im Zusammenhang mit dem Netzwerk handelt, aber ich konnte es nicht lösen und es endete nach der Änderung. Wenn jemand weiß, lassen Sie es mich bitte wissen.

Komplett

Es funktioniert so. スクリーンショット 2020-01-28 22.53.10.png

スクリーンショット 2020-01-28 22.54.28.png

Ich möchte in Zukunft etwas mit DB machen. (Erzähl mir die Details des Songs, des Empfehlungssystems usw.)

Bonus (Heroku-Add-On)

--Paterrail: Zur Protokollüberwachung --Prozessplaner: Schlaf um Mitternacht

Referenz

Recommended Posts

Ich habe einen Musik-Bot mit discord.py und der Google Drive-API erstellt (getestet mit Docker → bereitgestellt für Heroku).
Ich habe versucht, LINE BOT mit Python und Heroku zu machen
Hochladen auf ein freigegebenes Laufwerk mit Google Drive API V3
Ich habe Chatbot mit LINE Messaging API und Python erstellt
Ich habe mit Python, Flask und Heroku ein Nyanko-Tweet-Formular erstellt
Ich habe einen Twitter-Bot mit Go x Qiita API x Lambda erstellt
Ich habe Chatbot mit der LINE Messaging API und Python (2) ~ Server ~ erstellt
Ich habe versucht, die Google-API mit Ruby und Python zu erreichen. Machen Sie die Datenbank zu einer Tabelle und verwalten Sie sie mit Google Drive
Ich habe versucht, "Sakurai-san" LINE BOT mit API Gateway + Lambda zu erstellen
Ich habe einen Stempelersatzbot mit Linie gemacht
Drei Dinge, von denen ich süchtig war, als ich Python und MySQL mit Docker verwendete
Ich habe einen LINE Bot mit Serverless Framework erstellt!
Ich habe ein System erstellt, das automatisch entscheidet, ob es morgen mit Python ausgeführt wird, und es zu Google Kalender hinzufügt.
Ich habe versucht, eine einfache Bilderkennungs-API mit Fast API und Tensorflow zu erstellen
Mattermost Bot mit Python gemacht (+ Flask)
Ich habe versucht, das Update von "Werde ein Romanautor" mit "IFTTT" und "Werde ein Romanautor API" zu benachrichtigen.
Ich habe ein Programm erstellt, um Bilder mit Python und OpenCV in ASCII-Grafik umzuwandeln
[AWS] Ich habe BOT mit LINE WORKS daran erinnert
Ich habe einen Twitter BOT mit GAE (Python) gemacht (mit einer Referenz)
Ich habe mit LINE Bot ein Haushaltsbuch für Bot erstellt
Ich habe mit Play with Docker einen gebrauchsfertigen Syslog-Server erstellt
Analysieren mit Google Colaboratory mithilfe der Kaggle-API
Ich habe einen Server mit Python-Socket und SSL erstellt und versucht, über den Browser darauf zuzugreifen
Ich möchte einen Sprachwechsler mit Python und SPTK in Bezug auf eine berühmte Site erstellen
So stellen Sie eine mit Flask erstellte Web-App für Heroku bereit
Ein einfacher interaktiver Musikplayer mit Chuck und OpenPose
Ich habe ein Paket erstellt, um Zeitreihen mit Python zu filtern
Bis die von Flask + MySQL erstellte API in Docker konvertiert wird
[AWS] Ich habe BOT mit LINE WORKS (Implementierung) in Erinnerung gerufen.
Ich habe einen Zwietrachtbot gemacht
Ich habe mit Heroku + Flask + PostgreSQL (Heroku Postgres) einen LINE-Bot erstellt, der mir den Typ und die Stärke von Pokemon in der Garal-Region angibt.
Ich habe eine Bibliothek erstellt, die Konfigurationsdateien mit Python einfach lesen kann
Eine Geschichte über das Hinzufügen einer REST-API zu einem mit Python erstellten Daemon
Ich habe mit Razpai einen Webserver erstellt, um Anime zu schauen
Erhalten Sie Conversions und Einnahmen mit der Google Analytics-API und melden Sie sich bei Slack
Ich habe versucht, mit Selenium und Python einen regelmäßigen Ausführungsprozess durchzuführen
Erstellen Sie ganz einfach einen TalkBot mit Discord.py und der Talk-API von A3RT (pya3rt).
[Einführung] Ich möchte mit Python einen Mastodon-Bot erstellen! 【Anfänger】
Ich habe versucht, Bulls and Cows mit einem Shell-Programm zu erstellen
Ich möchte eine Pipfile erstellen und im Docker wiedergeben
Ich habe versucht, eine ToDo-App mit einer Flasche mit Python zu erstellen
Ich habe eine Entwicklungsumgebung für Django 3.0 mit Docker, Docker-Compose und Poetry erstellt
Ich habe einen Pokerspielserver Chat-Holdem mit Websocket mit Python erstellt
[Python] Ich habe eine REST-API mit AWS API Gateway und Lambda geschrieben.
Ich habe einen Chat-Chat-Bot mit Tensor2Tensor erstellt und diesmal hat es funktioniert
Ich habe versucht, die Docomo-Spracherkennungs-API und die Google Speech-API in Java zu verwenden
Ich habe einen Bot erstellt, um ihn auf Twitter zu posten, indem ich mit AWS Lambda eine dynamische Site im Internet abgekratzt habe (Fortsetzung).
Ich habe einen Line-Bot mit Python gemacht!
Ich habe einen Wikipedia Gacha Bot gemacht
Ich habe mit Python eine Lotterie gemacht.
Ich habe mit Python einen Daemon erstellt
Ich habe einen Docker-Container erstellt, um JUMAN ++, KNP, Python (für pyKNP) zu verwenden.
Ich habe ein Tool zum automatischen Durchsuchen mehrerer Websites mit Selenium (Python) erstellt.
[Django] Erstellt ein Feld zur Eingabe von Daten mit 4-stelligen Zahlen
Ich habe ein Systemkonfigurationsdiagramm mit Diagrams on Docker geschrieben
Ich habe versucht, datetime <-> string mit tzinfo mit strftime () und strptime () zu konvertieren.
Die Geschichte, den Versuch aufzugeben, mit Heroku eine Verbindung zu MySQL herzustellen