Utente:FLAK-ZOSO/Sandbox
Applicazioni
modificaA partire dalle funzioni di base, utilizzando altri moduli tra i quali asyncio.py e time.py[1], si possono creare applicazioni utili, tra le quali:
- Ban/Kick a tempo determinato
async def ban_temporaneo(member, tempo):
await member.ban()
await asyncio.sleep(tempo)
await member.unban()
- Stato del Bot a tempo determinato
async def Cambia_stato(ctx, tempo, nuovo_stato):
nuovo_stato = discord.Game(str(nuovo_stato))
await Bot.change_presence(status = discord.Status.idle, activity = nuovo_stato)
tempo = float(tempo)
from asyncio import sleep
await sleep(tempo)
await Bot.change_presence(status = discord.Status.idle, activity = gioco)
Bot.help
modificaOgni Bot possiede di default un suo comando per inviare l'elenco delle funzioni che può svolgere, che può essere però rimosso se se ne volesse implementare uno simile e che si giudichi maggiormente funzionale[2].
Bot.remove_command('help')
Sono esempi di comandi di aiuto migliorati rispetto a quello di default ad esempio quello di Lawliet, basato sulle reazioni[3], o quello di Unbelievaboat, che ha sostanziali modifiche nella grafica.
Anti-spam
modificaI Bot possono essere usati per limitare la spam, come nell'esempio che segue:
@Bot.event
async def on_message(messaggio):
global messaggi
author = messaggio.author
if author != Bot.user:
messaggi.append(messaggio.content)
for i in messaggi:
if i == messaggio.content:
if len(messaggi) > 2:
lunghezza = len(messaggi)
if messaggi[lunghezza-1] == messaggi[lunghezza-2] == messaggi[lunghezza-3]:
if messaggi[lunghezza-1] == messaggi[lunghezza-2] == messaggi[lunghezza-3] == messaggi[lunghezza-4]:
if messaggi[lunghezza-1] == messaggi[lunghezza-2] == messaggi[lunghezza-3] == messaggi[lunghezza-4] == messaggi[lunghezza-5]:
try:
await author.kick(reason = 'spam')
print(f"{author} stava spammando un messaggio in {messaggio.channel}, quindi l'ho espulso.")
await messaggio.reply(f"{author.mention} stava spammando questo messaggio, quindi l'ho espulso.")
print(messaggi)
messaggi = []
return
except discord.errors.Forbidden:
await messaggio.reply(f"{author.mention} stava spammando questo messaggio, quindi ho provato ad espellerlo. Purtroppo non ho l'autorizzazione necessaria per farlo.")
print(messaggi)
messaggi = []
return
else:
await messaggio.reply(f'{author.mention}, questo è il tuo ultimo avvertimento!')
return
else:
await messaggio.reply(f'{author.mention}, smettila di scrivere lo stesso messaggio. Se lo farai altre due volte sarai espulso dal server!')
return messaggi
else:
return messaggi
else:
return
Sono inseriti (ad esempio a riga 21) degli except
riguardanti degli errori diversi da quelli built-in[4], che richiedono l'importazione di discord.exe.errors
, o (nel caso specifico) soltanto di discord.py
.
- ^ L'equivalente di <locale> (lettura "local-e") in C++, importa una serie di variabili a seconda del luogo nel quale ci si trova, tra le quali il fuso orario e i caratteri UTF-8 della lingua locale.
- ^ Bot.remove_command(help), su stackoverflow.com, 11 Maggio 2021.
- ^ Emoji che si possono attaccare al di sotto di un messaggio, e che tramite Discord.py possono essere percepite dal Bot con:
@Bot.event async def on_reaction():
- ^ Come
TypeError
eValueError