[PYTHON] Créez un BOT qui peut appeler des images enregistrées avec Discord comme des pictogrammes

En premier(?)

Il semble pratique de pouvoir produire une image immédiatement comme un tampon LINE. Je l'ai fait parce que je pensais

Produit fini

1 Commencez par enregistrer l'image キャプチャ.PNG

2 Insérez le nom utilisé lors de l'enregistrement! Dans le message à envoyer. Ensuite, l'image est envoyée. キャプチャ2.PNG

Pour supprimer l'image enregistrée, faites s! Suppr [nom]

programme

#coding=utf-8
import discord
import re
import os
import glob

client = discord.Client()

@client.event
async def on_ready():
    print('Connecté')

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

    word = re.compile("s!add (.+)").search(message.content)
    if word:
        wo = word.group(1)
        await message.channel.send("mise en place...")
        picu = message.attachments[0].url
        file = str(message.guild.id) + "/" + wo + ".txt"
        try:
            os.mkdir(f"./{str(message.guild.id)}")
        except FileExistsError:
            pass
        with open(file, mode='w') as f:
            f.write(str(picu))
        await message.channel.send("Ajout d'un tampon.")
        f.close()
        return

    wordd = re.compile("s!del (.+)").search(message.content)
    if wordd:
        woo = wordd.group(1)
        file = str(message.guild.id) + "/" + woo + ".txt"
        if (os.path.exists(file)):
            await message.channel.send("Suppression...")
            os.remove(file)
            await message.channel.send("Le cachet a été supprimé.")
        else:
            await message.channel.send("Le timbre n'a pas été trouvé.")
        return

    pe = re.compile('s!list (.+)').search(message.content)
    if pe:
        casfo = glob.glob(str(message.guild.id) + "/*")
        nopas = str(message.guild.id)
        lis = []
        for file in casfo:  #Liste des fichiers
            prii = file.lstrip(nopas)
            pri = prii.rstrip(".txt")
            pr = pri.rstrip("/")
            p = pr.lstrip("\\")
            lis.append(p)
        pa = int(pe.group(1))
        no = len(lis)
        embed = discord.Embed(title="Liste des timbres", description=f"{str(pa)}Page de la page\n Nombre de timbres:{len(lis)}", color=0x4682b4)
        c = 0
        cc = 0
        if pa > 1:
            ccc = pa*10
            c = ccc - 10
        while True:
            try:
                naiy = lis[c]
            except:
                if pa == 1:
                    await message.channel.send("Il n'y a pas encore de timbre.")
                    return
                await message.channel.send(f"{str(pa)}Il n'y a pas encore de page")
                return
            c = c + 1
            embed.add_field(name=str(c), value=naiy)
            if c == pa * 10:
                await message.channel.send(embed=embed)
                return
            if c == len(lis):
                break
        await message.channel.send(embed=embed)
        return

    s = message.content
    if s.count("!") == 2:
        x = s.find("!")
        y = s.find("!", x+2)
        sta = s[x + 1 : y]
        if sta == None:
            return
        pas = str(message.guild.id) + "/" + sta + ".txt"
        if os.path.exists(pas) == False:
            return
        with open(pas) as f:
            url = f.read()
        f.close()
        await message.channel.send(url)
        return

print('de liaison...')
#Parce que c'est TOKEN pour le test, il peut fuir
client.run("NzA2MzQwNTMwMDE5MjM3OTQ0.Xq405w.pwRREjj-8N4MKph3QcV9NGb5EIM")

C'est très long car je n'ai pas le vocabulaire (?) Du code.

Comment ça fonctionne

Lors de l'enregistrement d'images, créez un dossier avec l'ID du serveur et Créez simplement un fichier texte dans lequel l'URL de l'image est écrite avec le nom de l'image. Que se passe-t-il lorsque vous envoyez un timbre S'il y en a deux!, Vérifiez le texte entre les deux!. Ensuite, lisez le fichier texte avec le nom de la phrase entre! Dans le dossier de cet ID de serveur. Envoyez l'URL de l'image qu'il contient. Achevée

Explication de la chose la plus importante dans ce programme ↑ ceci ↓ Celui qui examine le texte entre les deux!

s = message.content #Parce que c'est long, mettez-le en s
if s.count("!") == 2:
    x = s.find("!")
    y = s.find("!", x+2)
    sta = s[x + 1 : y]
    if sta == None:
        return
    pas = str(message.guild.id) + "/" + sta + ".txt"
    if os.path.exists(pas) == False:
        return
    with open(pas) as f:
        url = f.read()
    f.close()
    await message.channel.send(url)
    return

Dans le message! La partie pour rechercher les deux et le nom entouré par eux.

Comment ça fonctionne: 1 Premièrement, si s.count ("!") == 2: Vérifiez s'il y en a deux! 2 Trouvez le nombre de premier! Et second! Emplacements avec x = s.find ("1") et y = s.find ("!", X + 2). 3 Examinez les personnages dans la zone entourée de! At sta = s [x + 1: y] 4 Si sta == Aucun: confirmez qu'il n'est pas vide 5 pas = str(message.guild.id) + "/" + sta + ".txt" Est le chemin du fichier texte où l'URL de l'image enregistrée est enregistrée 6 if os.path.exists(pas) == False: Vérifiez si le fichier avec le chemin 5 existe 7 with open(pas) as f: Lisez le contenu du fichier texte avec 5 chemins et envoyez-le

À la fin

Je ne peux pas y penser la fin

Recommended Posts

Créez un BOT qui peut appeler des images enregistrées avec Discord comme des pictogrammes
Créez une API Web capable de fournir des images avec Django
Créez un programme qui peut générer votre image préférée avec Selenium
Créez un Discord Bot qui peut rechercher et coller des images
Créez un bot discord qui notifie unilatéralement avec python (seuls les requêtes et json sont utilisés)
Créez un bot qui ne renvoie que le résultat de l'analyse morphologique avec MeCab avec Discord
[LINE Messaging API] Créez un BOT qui se connecte à quelqu'un avec Python
Créez un bot qui stimule les tendances Twitter
Créez une application Web qui peut être facilement visualisée avec Plotly Dash
Créez des données de test comme ça avec Python (partie 1)
Créez un bot avec AWS Lambda qui démarre / arrête automatiquement les instances avec des balises spécifiques
Créer un LINE BOT avec Minette pour Python
J'ai enregistré PyQCheck, une bibliothèque qui peut effectuer QuickCheck avec Python, dans PyPI.
Créer une page qui se charge indéfiniment avec python
Vous pouvez facilement créer une interface graphique même avec Python
Étapes pour créer un bot Twitter avec Python
Convertir des images du SDK FlyCapture en un formulaire pouvant être utilisé avec openCV
Créez un BOT qui raccourcit l'URL Discord
Créez un chatbot prenant en charge la saisie gratuite avec Word2Vec
Créez un lot d'images et gonflez avec ImageDataGenerator
Créer un bot slack
Une histoire que j'ai eu du mal en essayant de créer une "application qui convertit des images comme des peintures" avec la première application Web
Créez une application Web qui reconnaît les nombres avec un réseau neuronal
Créez une PythonBox qui sort avec Random après l'entrée PEPPER
Créer une fonction pour afficher des images comme Jupyter / RStudio [Docker]
Créez une application d'apprentissage automatique avec ABEJA Platform + LINE Bot
Créez un bot Mastodon avec une fonction pour répondre automatiquement avec Python
Créons un script qui s'enregistre avec Ideone.com en Python.
Créez un jeu de vie mis à jour manuellement avec tkinter
Créez un Twitter BOT avec le SDK GoogleAppEngine pour Python
Tornado - Créons une API Web qui renvoie facilement JSON avec JSON
J'ai créé un plug-in qui peut faire "Daruma-san tombé" avec Minecraft
Faisons un diagramme sur lequel on peut cliquer avec IPython
Faisons un robot Discord.
Créer une page d'accueil avec django
J'ai fait un robot discord
Créer un répertoire avec python
[Python] Créez un graphique qui peut être déplacé avec Plotly
J'ai fait un package qui peut comparer des analyseurs morphologiques avec Python
[Road to Intermediate Python] Appelez une instance de classe comme une fonction avec __call__
Créez une Spinbox qui peut être affichée en binaire avec Tkinter
J'ai fait un shuffle qui peut être réinitialisé (inversé) avec Python
Créez un graphique des devises qui peut être déplacé avec Plotly (2)
Créez une Spinbox pouvant être affichée dans HEX avec Tkinter
Créez un graphique des devises qui peut être déplacé avec Plotly (1)
Introduction de la commande ls lsix qui peut afficher une liste d'images