fixed poilau feature not ignoring non-alphanumeric characters

This commit is contained in:
Anselme François 2023-06-16 12:45:31 +00:00
parent 421ab21a00
commit 363dcc3db5

View File

@ -23,7 +23,7 @@ client.riddles = []
client.answers = []
client.rhyme_keys = {}
client.rhyme_strings = {}
client.cooldown = 0
client.cooldown = {}
client.ongoing_riddles = {}
def load_riddles():
@ -106,11 +106,11 @@ def format_message(current_riddle):
else:
return "Énigme {0}:\n{1}".format(current_riddle['index'] + 1, formatted_riddle)
def get_last_word(ch:str)->str:
truncated = ch.split(None)[-1]
def get_last_word(ch:str)->str:
truncated = ch
while True:
if len(truncated) == 1 or truncated[-1].isnumeric():
return False
if len(truncated) < 2 or truncated[-1].isnumeric():
return ''
if truncated[-1].isalpha() and truncated[-2].isalpha():
break
truncated = truncated[:-1]
@ -122,6 +122,14 @@ def poil_auquel(ch:str)->str:
return random.choice(client.rhyme_strings[key])
return ''
async def channel_name(channel):
if isinstance(channel, discord.DMChannel):
dm_channel = await client.fetch_channel(channel.id)
return '[DM={0}]'.format(dm_channel.recipient.name)
else:
return '[Server={0}] => [Channel={1}]'.format(channel.guild.name, channel.name)
@client.event
async def on_ready():
load_riddles()
@ -173,16 +181,15 @@ async def on_message(message):
if message_content == 'debug fouras':
dump = {}
dump['poil_au_cooldown'] = client.cooldown - time.time()
cooldowns = {}
for key, value in client.cooldown.items():
cooldowns[channel_name(key)] = value - time.time()
dump['poil_au_cooldown'] = client.cooldown
for key, value in client.ongoing_riddles.items():
dump_channel = value
dump_channel.pop("message", None)
dump_channel['answer'] = '||{0}||'.format(dump_channel['answer'])
if isinstance(key, discord.DMChannel):
dm_channel = await client.fetch_channel(key.id)
dump['[DM={0}]'.format(dm_channel.recipient.name)] = dump_channel
else:
dump['[Server={0}] => [Channel={1}]'.format(key.guild.name, key.name)] = dump_channel
dump[channel_name(key)] = dump_channel
await message.author.send(json.dumps(dump, ensure_ascii=False, indent=4))
return
@ -221,12 +228,15 @@ async def on_message(message):
last_word = get_last_word(message_content)
if last_word:
poil = poil_auquel(message_content)
if poil and time.time() - client.cooldown > 0:
poil = poil_auquel(last_word)
cooldown = 0
if message.channel in client.cooldown:
cooldown = client.cooldown[message.channel]
if poil and time.time() - cooldown > 0:
wait_time = random.randint(0, 900)
if bool(random.getrandbits(1)):
wait_time = random.randint(900, 10800)
client.cooldown = time.time() + wait_time
client.cooldown[message.channel] = time.time() + wait_time
await message.channel.send(poil)
return