fixed poilau feature not ignoring non-alphanumeric characters
This commit is contained in:
parent
421ab21a00
commit
363dcc3db5
36
fouras.py
36
fouras.py
@ -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():
|
||||
@ -107,10 +107,10 @@ def format_message(current_riddle):
|
||||
return "Énigme {0}:\n{1}".format(current_riddle['index'] + 1, formatted_riddle)
|
||||
|
||||
def get_last_word(ch:str)->str:
|
||||
truncated = ch.split(None)[-1]
|
||||
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
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user