WIP on proposal

This commit is contained in:
Darks 2023-06-11 21:22:40 +02:00
parent cb6a43f843
commit 90d827b15e
Signed by: Darks
GPG Key ID: 7515644268BE1433
5 changed files with 93 additions and 42 deletions

View File

@ -8,52 +8,19 @@ from main import my_bot
# bot's name is included in a word (ex "Bobsleigh")
@my_bot.on(lambda m: my_bot.nick in m.text)
def hello(msg):
my_bot.send(msg.to, f"What's up, {m.author}")
""" Says hello to nice people """
my_bot.send(msg.to, f"What's up, {m.author}?")
# Register a command on specific channels
@my_bot.on_channel("#fun", "#play")
@my_bot.command("!fun")
@my_bot.on_channel("#fun", "#play")
def cmd_fun(msg):
""" Give some fun, but only on authorized channels """
my_bot.send(msg.to, "Fun is allowed only here")
""" Gives some fun, but only on authorized channels """
my_bot.send(msg.to, "Fun is allowed only here.")
# Register a command on specific users
@my_bot.users("Breizh")
@my_bot.on(lambda m: True)
@my_bot.users("Breizh")
def breizh_is_always_right(msg):
""" Agree every message from Breizh """
""" Agrees every message from Breizh """
my_bot.send(msg.to, "I agree what Breizh said.")
# Create commands using message history
@my_bot.on_channel("#duck_hunting")
@my_bot.command("!new")
def cmd_duck(msg):
my_bot.send(msg.to, "Hey, here's a duck!")
@my_bot.on_channel("#duck_hunting")
@my_bot.on(lambda m: m.text.lower == "pan!")
def resp_duck(msg):
# Retreive index of last duck sent
index = None
for i, m in enumerate(reversed(my_bot.history)):
if m.author == my_bot.nick and m.to == "#duck_hunting" \
and m.text = "Hey, here's a duck!":
index = i
break
# If no duck found :(
if index is None:
my_bot.send(msg.to, "Where did you see a duck, idiot?")
return
# Check if there was replies from other users since the last duck
for m in my_bot.history[-i:-2]:
if "pan!" in m.lower():
my_bot.send(msg.to, f"{m.author} was quickier than you, looser!")
return
# User was the quickiest, congrats!
my_bot.send(msg.to, f"Congrats {msg.author}, you are the winner!")

37
proposal/dynamic.py Normal file
View File

@ -0,0 +1,37 @@
# Import the relevant bot and libraries
from main import my_bot
import uuid
# Setup some global vars
vip_nicks = {"Darks"}
vip_channel = uuid.uuid4()
# Create a "private" function to handle the VIP channel
@my_bot.command("!vip")
def cmd_vip(msg):
if msg.author not in vip_nicks:
my_bot.send(msg.to, "Sorry but you're not a VIP. This command is for VIPs only.")
return
# No arguments, give the channel name as private message
if msg == "":
my_bot.send(msg.author, f"The VIP channel is #{vip_channel}")
# If message was send in a public channel, send a reminder
if msg.to.beginswith("#"):
my_bot.send(msg.to, "Check you private messages, {msg.author}.")
# Parse args
match(msg.text.split()):
case ["invite", nick]:
vip_nicks.add(nick)
my_bot.send(msg.to, f"{nick} is now a VIP.")
case ["exclude", nick]:
try:
vip_nicks.remove(nick)
my_bot.send(msg.to, f"{nick} is no longer a VIP.")
except KeyError:
my_bot.send(msg.to, f"{nick} not found in the VIPs.")
case ["list"]:
my_bot.send(msg.to, "VIPs are " + ", ".join(vip_nicks) + ".")
case _, :
my_bot.send(msg.to, "Invalid command. Valid ones are: `invite <nick>`, `exclude <nick>`, `list`.")

9
proposal/help.py Normal file
View File

@ -0,0 +1,9 @@
# Import the relevant bot
from main import my_bot
# Register a command to display help
# This uses the internal `help` method of class Bot
@my_bot.command("!help")
def help(msg):
my_bot.send(msg.to, my_bot.help())

35
proposal/history.py Normal file
View File

@ -0,0 +1,35 @@
# Import the relevant bot
from main import my_bot
# Register commands using message history
@my_bot.command("!new")
@my_bot.on_channel("#duck_hunting")
def cmd_duck(msg):
""" Sends a duck, then congrats the first to shoot it """
my_bot.send(msg.to, "Hey, here's a duck!")
@my_bot.on(lambda m: m.text.lower() == "pan!")
@my_bot.on_channel("#duck_hunting")
def resp_duck(msg):
# Retreive index of last duck sent
index = None
for i, m in enumerate(reversed(my_bot.history)):
if m.author == my_bot.nick and m.to == "#duck_hunting" \
and m.text = "Hey, here's a duck!":
index = i
break
# If no duck found :(
if index is None:
my_bot.send(msg.to, "Where did you see a duck, idiot?")
return
# Check if there was replies from other users since the last duck
for m in my_bot.history[-i:-2]:
if m.text.lower() == "pan!":
my_bot.send(msg.to, f"{m.author} was quickier than you, looser!")
return
# User was the quickiest, congrats!
my_bot.send(msg.to, f"Congrats {msg.author}, you are the winner!")

View File

@ -15,5 +15,8 @@ my_bot = Bot(
def cmd_pong(msg):
my_bot.send(msg.to, "Pong!")
# Or import them from another file
from commands import *
# Or import them from another file(s)
import commands
import dynamic
import help
import history