Créez un Yuma avec Discord.py

introduction

@ Nemesis Essayez d'implémenter Yuma en Java et @ nekozuki_dev Essayez d'implémenter Yuma dans Discord Bot Il s'agit de la version discord.py de (http://qiita.com/nekozuki_dev/items/485d47a459a63f59400f). Si vous êtes nouveau sur discord.py, veuillez lire quelque chose comme Bot Discord pratique en Python (explication discordpy). (Je ne pense pas) Puisqu'il s'agit du premier article, je suis désolé s'il y a quelque chose de difficile à lire. ** Attention au thème léger! ** **

Remplacer

Entrez le nom

Scanner keiyakusho = new Scanner(System.in);
String name = keiyakusho.nextLine();

Dans l'original, l'entrée est demandée à la console comme ceci,

ニックネーム

"Vous avez un surnom!" C'est pourquoi j'utiliserai un surnom cette fois.

production

System.out.println("A partir de maintenant, ton nom est"+newName+"Il est. Attention,"+newName+"C'est vrai. Je répondrai quand je comprendrai"+newName+"!!");

Dans l'original, seul le résultat est affiché, mais comme le surnom peut être modifié avec l'API Discord, je vais en fait changer le surnom.

Ecrire le code

J'écrirai en fait le code.

Bot de base

Utilisez celui qui est Officiel préparé.

import discord

client = discord.Client()

@client.event
async def on_ready():
    print('We have logged in as {0.user}'.format(client))

@client.event
async def on_message(message):
    if message.author == client.user:
        return

    if message.content.startswith('$hello'):
        await message.channel.send('Hello!')

client.run('your token here')

Maintenant, vous avez un Bot qui répond lorsque vous envoyez $ hello. Hello!

Faites-le réagir avec des mentions

User.menteled_in ( ClientUser.mentlined_in Utilisez /ja/latest/api.html#discord.ClientUser.mentrated_in)) pour faire un jugement de mention.

if message.content.startswith('$hello'):
  await message.channel.send('Hello!')

À

if client.user.mentioned_in(message):
  await message.channel.send('Hello!')

À メンションで反応 ~~ Une scène précieuse où Yuma parle anglais ~~

Changer la réaction

await message.channel.send('Hello!')

Je vais changer ici.


System.out.println("C'est un contrat. Écrivez votre nom ici.");

Scanner keiyakusho = new Scanner(System.in);
String name = keiyakusho.nextLine();

System.out.println("Hung."+name +"Je veux dire. C'est un nom luxueux.");

Random random = new Random();
int newNameIndex = random.nextInt(name.length());
String newName = name.substring(newNameIndex,newNameIndex+1);

System.out.println("A partir de maintenant, ton nom est"+newName+"Il est. Attention,"+newName+"C'est vrai. Je répondrai quand je comprendrai"+newName+"!!");

Ceci est le code original. Si vous réécrivez cela avec Python,

import random
#~~~~~~~~~
print("C'est un contrat. Écrivez votre nom ici.")

name = input()

print(f"Hung.{name}Je veux dire. C'est un nom luxueux.")

new_name = random.choice(name)

print(f"A partir de maintenant, ton nom est{new_name}Il est. Attention,{new_name}C'est vrai. Je répondrai quand je comprendrai{new_name}!!")

Ce sera comme ça. Si vous réécrivez ceci dans la spécification discord.py ...

import random
#~~~~~~~~~
await message.channel.send("C'est un contrat. Écrivez votre nom ici.")

await message.channel.send(f"(Vous êtes dans le contrat`{message.author.display_name}`J'ai écrit.)")

name = message.author.display_name

await message.channel.send(f"Hung.`{name}`Je veux dire. C'est un nom luxueux.")

new_name = random.choice(name.replace(" ",""))

await message.channel.send(f"A partir de maintenant, ton nom est`{new_name}`Il est."
f"Attention,`{new_name}`C'est vrai. Je répondrai quand je comprendrai`{new_name}`!!")

await message.author.edit(nick=new_name)

await message.channel.send(f"(Votre surnom est`{new_name}`Devenu.)")

Ce sera comme ça. はっや!!! (Je change de serveur à partir d'ici.) Il est trop tôt, alors je vais vous faire attendre un moment.

Faites-en des spécifications faibles

Utilisez asyncio.sleep pour ralentir la réponse. ** Notez que si vous n'utilisez pas asyncio.sleep, tout le Bot s'arrêtera! ** **

import random
import asyncio
#~~~~~~~~~
await message.channel.send("C'est un contrat. Écrivez votre nom ici.")
await asyncio.sleep(1)
await message.channel.send(f"(Vous êtes dans le contrat`{message.author.display_name}`J'ai écrit.)")

name = message.author.display_name
await asyncio.sleep(2)
await message.channel.send(f"Hung.`{name}`Je veux dire. C'est un nom luxueux.")

new_name = random.choice(name.replace(" ",""))
await asyncio.sleep(4)
await message.channel.send(f"A partir de maintenant, ton nom est`{new_name}`Il est."
f"Attention,`{new_name}`C'est vrai. Je répondrai quand je comprendrai`{new_name}`!!")

await message.author.edit(nick=new_name)

await message.channel.send(f"(Votre surnom est`{new_name}`Devenu.)")

Maintenant ça. Le résultat de l'incorporation de ceci dans le code principal est ... 完成 J'espère que c'est terminé! ~~ Pas d'objection ~~

finalement

J'ai fait une tante de source chaude avec discord.py. Puisqu'il s'agit du premier article, il peut être difficile à lire. Dans ce cas, veuillez laisser un commentaire.

Merci d'avoir lu jusqu'au bout.

Cette source

import discord
import random
import asyncio

client = discord.Client()

@client.event
async def on_ready():
    print('We have logged in as {0.user}'.format(client))

@client.event
async def on_message(message):
    if message.author == client.user:
        return

    if client.user.mentioned_in(message):
        await message.channel.send("C'est un contrat. Écrivez votre nom ici.")
        await asyncio.sleep(1)
        await message.channel.send(f"(Vous êtes dans le contrat`{message.author.display_name}`J'ai écrit.)")
        
        name = message.author.display_name
        await asyncio.sleep(2)
        await message.channel.send(f"Hung.`{name}`Je veux dire. C'est un nom luxueux.")
        
        new_name = random.choice(name.replace(" ",""))
        await asyncio.sleep(4)
        await message.channel.send(f"A partir de maintenant, ton nom est`{new_name}`Il est."
        f"Attention,`{new_name}`C'est vrai. Je répondrai quand je comprendrai`{new_name}`!!")
        
        await message.author.edit(nick=new_name)
        
        await message.channel.send(f"(Votre surnom est`{new_name}`Devenu.)")

client.run("your token here")

Supplément

Interdit crache si la personne qui a essayé de le faire a une autorité supérieure. Si possible, c'est un problème, alors Yoshi!

Recommended Posts

Créez un Yuma avec Discord.py
Créer des couches Lambda avec Lambda
Créer des diapositives avec iPython
Créez des boutons de type SF avec Kivy
Faisons Othello avec wxPython
Rendre avec la syntaxe facile
Créez Puyopuyo AI avec Python
Faites une loterie avec Python
Faire un feu avec kdeplot
Créer un chatbot Slack avec Errbot
Créez un bot LINE avec Python + heroku
Créer Apache Log CSV avec Python
Faites de l'art ASCII avec l'apprentissage en profondeur
Faisons une interface graphique avec python.
Faites un son avec le notebook Jupyter
Faisons une rupture de bloc avec wxPython
Faisons l'IA d'Othello avec Chainer-Part 1-
Des tests plus familiers avec Selenium
Créer un système de recommandation avec python
Rendre le serveur de calcul sans disque avec LTSP
Créer un filtre avec un modèle django
Faisons un graphe avec python! !!
Faisons un spacon avec xCAT
Faisons l'IA d'Othello avec Chainer-Part 2-
Créer un itérateur de modèle avec PySide
Faites sourire les gens avec le Deep Learning
Créer un exe Scrapy avec Pyinstaller
Faire un joli graphique avec plotly
Rendre la console Python couverte d'UNKO
Créer un contrôleur d'interface audio avec pyusb (2)
Faisons un jeu de shiritori avec Python
Rendez les applications GUI super faciles avec tkinter
Créez un simulateur de gacha rare avec Flask
Créez un pipeline de notebook avec Kedro + Papermill
Fractal pour faire et jouer avec Python
Faire une figure partiellement zoomée avec matplotlib
Créez un quiz de dessin avec kivy + PyTorch
Faisons la voix lentement avec Python
Rendre le serveur de contrôle PLEN compatible avec ViVi PLEN2
Facilitez la soumission de pypy avec atcoder-cli (python)
Créez un classificateur en cascade avec Google Colaboratory
Faisons un langage simple avec PLY 1
[Python] Rendons matplotlib compatible avec le japonais
Faire un circuit logique avec Perceptron (Perceptron multicouche)
Faire Oui Non Popup avec Kivy
Faire une minuterie de lavage-séchage avec Raspberry Pi
Créer une animation GIF avec surveillance des dossiers
Créez un framework Web avec Python! (1)
Faisons une IA à trois yeux avec Pylearn 2
Créez une application de bureau avec Python avec Electron
Faisons un bot Twitter avec Python!
Créer une API pour le thermo-hygromètre Switchbot avec Node-RED
Créez un framework Web avec Python! (2)
Définissez les paramètres communs avec le sous-graphique de matplotlib