[PYTHON] Créez un BOT qui raccourcit l'URL Discord

Comme le dit le titre Lorsque l'URL est longue, lorsque l'aperçu est affiché à l'URL YouTube, le message ci-dessus ne sera pas visible pour ceux qui utilisent un smartphone. J'ai créé ce BOT parce que je pensais que ce n'était pas pratique. Fabriqué par Python

Produit fini

ピー - コピー.PNG ↑ BOT que lorsque l'URL est incluse dans le message comme ceci, elle sera raccourcie si la réaction de la chaîne inférieure est pressée

Résultat ↓ キャプチャ.PNG

L'ensemble du programme

import discord
import re
import asyncio
from urllib.parse import urlparse

#C'est pour ce test TOKEN, vous pouvez donc l'utiliser séparément.
TOKEN = "NzA2MzQwNTMwMDE5MjM3OTQ0.Xq405w.pwRREjj-8N4MKph3QcV9NGb5EIM"
client = discord.Client()

@client.event
async def on_ready():
    print("Prêt")

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

    pattern = "https?://[\w/:%#\$&\?\(\)~\.=\+\-]+"
    url_list = re.findall(pattern, message.content)
    if url_list != []:
        await message.add_reaction("⛓")
        return

@client.event
async def on_reaction_add(reaction, user):
    channel = client.get_channel(reaction.message.channel.id)
    if reaction.count >= 2 and reaction.emoji == "⛓":
        if reaction.count >= 3:
            pass
        else:
            s = reaction.message.content

            pattern = "https?://[\w/:%#\$&\?\(\)~\.=\+\-]+"
            url_list = re.findall(pattern, s)
            url_list[0]
            mes = s.strip(url_list[0])
            parsed_url = urlparse(url_list[0])
            site = '{uri.scheme}://{uri.netloc}/'.format(uri=urlparse(url_list[0]))


            embed = discord.Embed(title=f"{mes}",
                description=f"[URL courte]({url_list[0]})",
                color=0x87cefa)
            embed.set_author(name=reaction.message.author.display_name,
                icon_url=reaction.message.author.avatar_url_as(format="png"))
            embed.set_footer(text=f"{site}")

            await channel.send(embed=embed)
    return

client.run(TOKEN)

(Je l'ai écrit dur)

** Premier **

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

    #Ce ↑ ce ↓
    pattern = "https?://[\w/:%#\$&\?\(\)~\.=\+\-]+"
    url_list = re.findall(pattern, message.content)
    if url_list != []: #Si la liste est vide
        await message.add_reaction("⛓")
        return

C'est l'endroit qui est appelé quand un message arrive, et le favori est de ce ↑ this ↓. Le programme de ce ↑ this ↓ place l'URL incluse dans le message dans la liste. Si la liste est vide, ajoutez une réaction. Le gars de l'URL http://trelab.info/python/python-%E6%AD%A3%E8%A6%8F%E8%A1%A8%E7%8F%BE%E3%81%A7url%E3%81%AE%E4%B8%80%E8%87%B4%E3%83%81%E3%82%A7%E3%83%83%E3%82%AF%E3%80%81%E6%8A%BD%E5%87%BA%E3%82%92%E8%A1%8C%E3%81%86/ Reportez-vous à ... Non, je suis désolé.

La deuxième

@client.event
async def on_reaction_add(reaction, user):
    channel = client.get_channel(reaction.message.channel.id)
    if reaction.count >= 2 and reaction.emoji == "⛓":
        if reaction.count >= 3:
            pass
        else:
            s = reaction.message.content
            #Ce ↑ ce ↓
            pattern = "https?://[\w/:%#\$&\?\(\)~\.=\+\-]+"
            url_list = re.findall(pattern, s)
            url_list[0]
            mes = s.strip(url_list[0])
            parsed_url = urlparse(url_list[0])
            site = '{uri.scheme}://{uri.netloc}/'.format(uri=urlparse(url_list[0]))


            embed = discord.Embed(title=f"{mes}",
                description=f"[URL courte]({url_list[0]})",
                color=0x87cefa)
            embed.set_author(name=reaction.message.author.display_name,
                icon_url=reaction.message.author.avatar_url_as(format="png"))
            embed.set_footer(text=f"{site}")

            await channel.send(embed=embed)
    return

Où il existe un programme pour envoyer une URL raccourcie. Appelé lorsqu'une réaction est jointe. Le favori vient de l'endroit où cette ↑ cette ↓ est écrite Avant cela, celui qui détermine si la réaction est une chaîne Après cela ↑ ce ↓

pattern = "https?://[\w/:%#\$&\?\(\)~\.=\+\-]+"
url_list = re.findall(pattern, s)
url_list[0]
#Ce ↑ ce ↓
mes = s.strip(url_list[0])#Prendre l'URL du message
parsed_url = urlparse(url_list[0])#Supprimer le supplément de l'URL
site = '{uri.scheme}://{uri.netloc}/'.format(uri=urlparse(url_list[0]))

Est presque le même que celui que j'ai fait dans le premier Après cela ↑ ce ↓, prenez l'URL du message et supprimez le inutile de l'URL. Celui qui supprime le supplément de l'URL https://www.python.ambitious-engineer.com/archives/35 Faire référence à ...

embed = discord.Embed(title=f"{mes}",
    description=f"[URL courte]({url_list[0]})",
    color=0x87cefa)
embed.set_author(name=reaction.message.author.display_name,
    icon_url=reaction.message.author.avatar_url_as(format="png"))
embed.set_footer(text=f"{site}")

await channel.send(embed=embed)

C'est celui qui envoie le raccourci avec embed

Ceci complète

finalement

Hmm ne peut pas penser

la fin

Recommended Posts

Créez un BOT qui raccourcit l'URL Discord
Faisons un robot Discord.
Créez un bot qui ne renvoie que le résultat de l'analyse morphologique avec MeCab avec Discord
J'ai fait un bot mou qui m'informe de la température
Créez un Discord Bot qui peut rechercher et coller des images
Copiez la liste en Python
Créez un BOT qui affiche le nombre de personnes infectées dans le nouveau Corona
J'ai essayé de créer un BOT de traduction qui fonctionne avec Discord en utilisant googletrans
[Discode Bot] J'ai essayé de créer un Bot qui me dit la valeur de race de Pokemon
L'histoire de la création d'un Line Bot qui nous raconte le calendrier de la programmation du concours
Comment faire un Raspberry Pi qui parle les tweets d'un utilisateur spécifié
L'histoire du lancement d'un serveur Minecraft depuis Discord
Une histoire qui réduit l'effort de fonctionnement / maintenance
[Python] Un programme qui compte le nombre de vallées
Prenez note de la liste des utilisations de base de Pandas
#Une fonction qui renvoie le code de caractère d'une chaîne de caractères
LINE Bot qui vous informe des stocks d'intérêt
Générer cette forme du fond d'une bouteille pour animaux de compagnie
Une histoire qui a analysé la livraison de Nico Nama.
[Python] Un programme qui compare les positions des kangourous.
L'explication la plus simple au monde sur la création de LINE BOT (1) [Account preparation]
Créer un LINE BOT (chat)
J'ai fait un robot discord
Un outil qui transforme automatiquement le gacha de Soshage
Faisons l'analyse des données de naufrage du Titanic comme ça
Exécutons la commande à temps avec le bot discord
Faisons un robot qui résout le Rubik Cube! 2 Algorithme
Faisons un robot qui résout le Rubik Cube! 3 Logiciel
Faisons un robot qui résout le Rubik Cube! 1. Vue d'ensemble
L'histoire de la création d'un bot de boîte à questions avec discord.py
Script Python qui compare le contenu de deux répertoires
[Terminé] bot qui publie une notification du début de la diffusion en direct de Nico Nico sur Discord sur discord.py
[Concept] bot qui publie une notification du début de la diffusion en direct de Nico Nico en direct sur Discord sur discord.py
Comment créer un LINE BOT 004 interactif (répondre à la date de clôture d'une société cotée)
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é
Lors de l'incrémentation de la valeur d'une clé qui n'existe pas
J'ai essayé de créer un site qui permet de voir facilement les informations mises à jour d'Azure
pandas Récupère le nom d'une colonne contenant un caractère spécifique
J'ai créé un robot Line qui devine le sexe et l'âge d'une personne à partir de l'image
Une formule qui calcule simplement l'âge à partir de la date de naissance
Comment créer un bot slack
Création d'un bot Discord pour vous informer des mises à jour pour devenir romancier
Une fonction qui mesure le temps de traitement d'une méthode en python
[Python] Faire de la fonction une fonction lambda
L'histoire de la création d'un site qui répertorie les dates de sortie des livres
Obtenir l'URL du ticket JIRA créé par la bibliothèque jira-python
J'ai créé un bot de lecture de chat Discord en imitant l'apparence
[python] Une note que j'ai commencé à comprendre le comportement de matplotlib.pyplot
L'histoire de l'exportation d'un programme
L'histoire de la création d'un module qui ignore le courrier avec python
L'histoire de la création d'un Bot qui affiche les membres actifs dans un canal spécifique de Slack avec Python
[Python] Un programme qui fait pivoter le contenu de la liste vers la gauche
Créez un bot qui publie sur Slack le nombre de personnes positives pour le nouveau virus corona à Tokyo
Créez un BOT qui peut appeler des images enregistrées avec Discord comme des pictogrammes
[Python] Un programme qui calcule le nombre de segments de chocolat qui remplissent les conditions
L'histoire de la création d'un robot LINE pour le petit-déjeuner d'une université de 100 yens avec Python
J'ai fait un calendrier qui met à jour automatiquement le calendrier de distribution de Vtuber
[Python] Un programme qui calcule le nombre de chaussettes jumelées
Comment créer un bot Janken qui peut être facilement déplacé (commentaire)
J'ai créé un bot Discord en Python qui se traduit quand il réagit