[PYTHON] Enregistrez l'ID de canal spécifié dans le texte et chargez-le au prochain démarrage

Début

Quand j'ai commencé à créer un bot avec Discord après un long moment, j'ai mal compris que je ne pouvais pas envoyer de message à moins d'avoir l'ID de chaîne et de le spécifier. ~~ Produit accidentel (bien que prévu) ~~

Qu'est-ce que c'est?

Vérifiez d'abord l'existence du fichier Si tel est le cas, stockez l'ID de canal lu dans une variable Sinon, passez comme c'est le cas / setup ID de canal Si l'ID de canal est correct, un message de réussite sera envoyé au canal spécifié. /save Enregistrez l'ID de canal dans un fichier texte avec

Quand l'utilisez vous?

Les personnes qui spécifient des canaux afin que le bot ne se déplace pas sur différents canaux peuvent être utiles lors du changement de canal qui déplace le bot. ~~ Si vous ne vous en souciez pas, utilisez message.channel ~~

programme

<détails>

Code source (plié) </ summary>

import discord

client = discord.Client()


@client.event
async def on_ready():
    print("logged in as "+client.user.name)
    try:
        with open("test.txt","r")as f:
            channel=client.get_channel(int(f.read()))
            await channel.send("J'ai pu charger l'ID de chaîne")
    except FileNotFoundError:
        print("Impossible d'obtenir l'ID de chaîne")

@client.event
async def on_message(message):
    global tmp
    if message.author != client.user:
        if message.content.startswith("/setup")==True:
            tmp=message.content[7:len(message.content)]
            try:
                channel=client.get_channel(int(tmp))
            except ValueError:
                print("Valeur illégale")
            try:
                await channel.send("Succès")
            except AttributeError:
                print("ID de chaîne incorrect")
            except UnboundLocalError:
                print("Type illégal")
        if message.content=="/save":
            f=open("test.txt","w")
            f.write(tmp)
            f.close()
            channel=client.get_channel(int(tmp))
            await channel.send("J'ai enregistré l'identifiant de la chaîne")
client.run("token")

Commentaire

Fichier de chargement

    try:
        with open("test.txt","r")as f:
            channel=client.get_channel(int(f.read()))
            await channel.send("J'ai pu charger l'ID de chaîne")
            load=1
    except FileNotFoundError:
        print("Impossible d'obtenir l'ID de chaîne")

Si le fichier n'existe pas, essayez sauf est utilisé pour gérer l'erreur. Bien sûr, comme il est lu à partir d'un fichier texte, il est également nécessaire de convertir une chaîne de caractères en une valeur numérique, donc int () est également utilisé.

Obtenir l'identifiant de la chaîne

        if message.content.startswith("/setup")==True:
            tmp=message.content[7:len(message.content)]
            try:
                channel=client.get_channel(int(tmp))
            except ValueError:
                print("Valeur illégale")
            try:
                await channel.send("Succès")
            except AttributeError:
                print("ID de chaîne incorrect")
            except UnboundLocalError:
                print("Type illégal")

/ setup ID de canal Extraire uniquement la partie ID de canal avec client.get_channel (int (tmp)) Stocker l'ID de canal dans le canal ~~ Je ne sais pas comment gérer l'erreur, mais je l'ai mis dans ~~

Enregistrer l'ID de chaîne

        if message.content=="/save":
            f=open("test.txt","w")
            f.write(tmp)
            f.close()
            channel=client.get_channel(int(tmp))
            await channel.send("J'ai enregistré l'identifiant de la chaîne")

~~ ```open ("save file", "type") Je m'en souviens bien, mais si je me souviens de w d'écriture et de r de lecture, ce sera en quelque sorte () ~~ Cela ne devrait pas être difficile ici car il s'agit principalement d'écrire et de lire des fichiers.

Résumé

** Apprenez les bases **

Recommended Posts

Enregistrez l'ID de canal spécifié dans le texte et chargez-le au prochain démarrage
Trouvez-le dans la file d'attente et modifiez-le
12. Enregistrez la première colonne dans col1.txt et la deuxième colonne dans col2.txt
Entrez le mot de passe sudo au démarrage dans Fabric
Extrayez les informations de paroles dans le fichier MP3 / MP4 et enregistrez-les dans le fichier de paroles (* .lrc) pour Sony Walkman.
Extraire et lister les noms des personnes et des lieux dans le texte
Lisez le fichier csv et affichez-le dans le navigateur
Sélectionnez les variables requises dans TensorFlow et enregistrez / restaurez
Avant de le savoir, je ne pouvais pas utiliser de traits d'union dans l'ID client de l'API Channel de GAE.
Enregistrez le modèle pystan et les résultats dans un fichier pickle
[TF] Comment charger / enregistrer le modèle et le paramètre dans Keras