J'expliquerai ce que j'ai implémenté lors de l'exploitation du serveur en utilisant Discord avec des exemples de code. Le discord.py utilisé est la version de réécriture.
import discord
client = discord.Client()
@client.event
async def on_ready():
print('Logged in as')
print(client.user.name)
print(client.user.id)
print('------')
client.run("")
Le modèle ressemble à ceci. Écrivez le processus que vous souhaitez implémenter entre print ('------') et client.run ("").
# ?Frapper join vous donnera un poste nommé membre
@client.event
async def on_message(message):
if message.content == '?join' and len(message.author.roles) == 1:
role = discord.utils.get(message.guild.roles, name='member')
await message.author.add_roles(role)
reply = f'''Bienvenue{message.author.mention}M.
<#657524000993312768>Lisez s'il vous plaît
<#657105501036740608>Je serais heureux si tu pouvais écrire
'''
await message.channel.send(reply)
elif message.content == '+midnight':
role = discord.utils.get(message.guild.roles, name='midnight')
await message.author.add_roles(role)
elif message.content == '-midnight':
role = discord.utils.get(message.guild.roles, name='midnight')
await message.author.remove_roles(role)
elif message.content == '+novice':
role = discord.utils.get(message.guild.roles, name='novice')
await message.author.add_roles(role)
elif message.content == '-novice':
role = discord.utils.get(message.guild.roles, name='novice')
await message.author.remove_roles(role)
Ce processus mentionne l'expéditeur du message et envoie une réponse lorsque le canal de texte est écrit comme? Join. En envoyant une réponse et en ajoutant un rôle à un nouveau membre, vous pouvez empêcher les personnes qui n'ont pas envoyé de? Join de voir d'autres chaînes sur le serveur.
La seule façon de procéder est de définir le canal de message système Interdire à @everyone de lire des messages + autoriser uniquement l'envoi et interdire à @everyone de lire des messages avec d'autres autorisations de canal texte et vocal. A ce moment, l'autorité du poste de membre nouvellement rejoint (@member ici) permet de lire le message + seulement l'envoyer. Ce faisant, seul le canal de messagerie système (#welcome ici) sera affiché comme canal de texte pour les nouveaux membres. Les nouveaux membres peuvent envoyer du texte au canal de messagerie du système (#welcome), mais ne peuvent pas voir l'historique des messages. (Vous ne pouvez pas voir ce que vous avez envoyé vous-même. Vous ne pouvez le voir dans la colonne de notification que lorsque vous le mentionnez.)
if message.content == '?join' and len(message.author.roles) == 1:
Déterminez si le message est? Rejoignez et du bot si l'expéditeur du message n'a pas de position (les nouvelles personnes qui entrent sur le serveur n'ont que la position @everyone, elles ont donc une position) J'ai essayé d'envoyer un message.
reply = f'''Bienvenue{message.author.mention}M.
<#657524000993312768>Lisez s'il vous plaît
<#657105501036740608>Je serais heureux si tu pouvais écrire
'''
Même si vous écrivez #Welcome dans le texte, il ne fonctionnera pas comme une balise de hachage (la couleur du texte ne changera pas), donc en écrivant <# ID de canal de texte> dans le texte du message que vous souhaitez envoyer, vous pouvez créer une chaîne de caractères avec la fonction de balise de hachage. Vous pouvez l'envoyer.
await message.channel.send(reply)
elif message.content == '+midnight':
role = discord.utils.get(message.guild.roles, name='midnight')
await message.author.add_roles(role)
elif message.content == '-midnight':
role = discord.utils.get(message.guild.roles, name='midnight')
await message.author.remove_roles(role)
elif message.content == '+novice':
role = discord.utils.get(message.guild.roles, name='novice')
await message.author.add_roles(role)
elif message.content == '-novice':
role = discord.utils.get(message.guild.roles, name='novice')
await message.author.remove_roles(role)
Cette partie de code est un processus pour ajouter les positions minuit et novice en envoyant + minuit et + novice, et pour les supprimer en envoyant -midnight et -novice. En utilisant les paramètres d'autorisation de canal de texte ci-dessus, j'ai créé un canal de texte qui n'affiche que les membres avec la position novice.
# +Si vous appuyez sur sondage, tous les membres recevront une position de vote.-Supprimer des positions avec un sondage
if message.content == '+poll':
for i in range(len(message.guild.members)):
if 'Rythm' in str(message.guild.members[i]) or 'DISBOARD' in str(message.guild.members[i]) or 'Poll Bot' in str(message.guild.members[i]):
print('YES')
else:
print('NO')
print(message.guild.members[i])
role = discord.utils.get(message.guild.roles, name='poll')
await message.guild.members[i].add_roles(role)
if message.content == '-poll':
for i in range(len(message.guild.members)):
if 'Rythm' in str(message.guild.members[i]) or 'DISBOARD' in str(message.guild.members[i]) or 'Poll Bot' in str(message.guild.members[i]):
print('YES')
else:
print('NO')
print(message.guild.members[i])
role = discord.utils.get(message.guild.roles, name='poll')
await message.guild.members[i].remove_roles(role)
Quand quelqu'un écrit + sondage dans ce processus, tous les membres sauf les bots (Rythm, DISBOARD, Poll Bot) reçoivent la position du sondage. Nous avons créé un canal de texte qui n'affiche que le canal de texte appelé #Survey Survey afin que seules les personnes ayant la position de sondage puissent l'afficher pendant l'enquête. Cela vous permet de masquer les canaux de texte affichés sauf lorsque vous en avez besoin, ce qui simplifie la liste des canaux de texte.
if 'Rythm' in str(message.guild.members[i]) or 'DISBOARD' in str(message.guild.members[i]) or 'Poll Bot' in str(message.guild.members[i]):
Ici, il est jugé s'il s'agit d'un bot en vérifiant si le nom du membre contient des caractères spécifiques (Rythm, DISBOARD, Poll Bot dans cet exemple).
role = discord.utils.get(message.guild.roles, name='poll')
await message.guild.members[i].add_roles(role)
#Lors de l'attribution d'un poste à un membre
await message.guild.members[i].remove_roles(role)
#Lors de la prise de position d'un membre
Ce processus attribue ou supprime des postes aux membres.
# ?Tapez clean pour effacer le journal dans le canal de texte que vous avez tapé
if message.content == '?clean':
if message.author.guild_permissions.administrator:
await message.channel.purge()
#await message.channel.send('Supprimé le journal dans le canal')
elif message.channel.id == 657108629396389889:
print("YES")
print(message.channel.id)
await message.channel.purge()
else:
print("NO")
print(message.channel.id)
await message.channel.send('Privilèges d'administrateur requis pour supprimer les journaux')
C'est le code qui supprime tous les journaux de conversation dans le canal de texte qui ont envoyé? Nettoyer (jusqu'à 100 à la fois) lorsque l'administrateur du serveur (un seul affichage de la couronne sur chaque serveur) tape? Nettoyer.
elif message.channel.id == 657108629396389889:
print("YES")
print(message.channel.id)
await message.channel.purge()
Uniquement si le message a été envoyé ici pour un canal spécifique (ID de canal 65718629396389889), vous pouvez supprimer le journal des conversations même si vous n'êtes pas l'administrateur du serveur.
Recommended Posts