fixed poilau feature not ignoring non-alphanumeric characters
This commit is contained in:
parent
421ab21a00
commit
363dcc3db5
38
fouras.py
38
fouras.py
@ -23,7 +23,7 @@ client.riddles = []
|
|||||||
client.answers = []
|
client.answers = []
|
||||||
client.rhyme_keys = {}
|
client.rhyme_keys = {}
|
||||||
client.rhyme_strings = {}
|
client.rhyme_strings = {}
|
||||||
client.cooldown = 0
|
client.cooldown = {}
|
||||||
client.ongoing_riddles = {}
|
client.ongoing_riddles = {}
|
||||||
|
|
||||||
def load_riddles():
|
def load_riddles():
|
||||||
@ -106,11 +106,11 @@ def format_message(current_riddle):
|
|||||||
else:
|
else:
|
||||||
return "Énigme {0}:\n{1}".format(current_riddle['index'] + 1, formatted_riddle)
|
return "Énigme {0}:\n{1}".format(current_riddle['index'] + 1, formatted_riddle)
|
||||||
|
|
||||||
def get_last_word(ch:str)->str:
|
def get_last_word(ch:str)->str:
|
||||||
truncated = ch.split(None)[-1]
|
truncated = ch
|
||||||
while True:
|
while True:
|
||||||
if len(truncated) == 1 or truncated[-1].isnumeric():
|
if len(truncated) < 2 or truncated[-1].isnumeric():
|
||||||
return False
|
return ''
|
||||||
if truncated[-1].isalpha() and truncated[-2].isalpha():
|
if truncated[-1].isalpha() and truncated[-2].isalpha():
|
||||||
break
|
break
|
||||||
truncated = truncated[:-1]
|
truncated = truncated[:-1]
|
||||||
@ -122,6 +122,14 @@ def poil_auquel(ch:str)->str:
|
|||||||
return random.choice(client.rhyme_strings[key])
|
return random.choice(client.rhyme_strings[key])
|
||||||
return ''
|
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
|
@client.event
|
||||||
async def on_ready():
|
async def on_ready():
|
||||||
load_riddles()
|
load_riddles()
|
||||||
@ -173,16 +181,15 @@ async def on_message(message):
|
|||||||
|
|
||||||
if message_content == 'debug fouras':
|
if message_content == 'debug fouras':
|
||||||
dump = {}
|
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():
|
for key, value in client.ongoing_riddles.items():
|
||||||
dump_channel = value
|
dump_channel = value
|
||||||
dump_channel.pop("message", None)
|
dump_channel.pop("message", None)
|
||||||
dump_channel['answer'] = '||{0}||'.format(dump_channel['answer'])
|
dump_channel['answer'] = '||{0}||'.format(dump_channel['answer'])
|
||||||
if isinstance(key, discord.DMChannel):
|
dump[channel_name(key)] = dump_channel
|
||||||
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
|
|
||||||
await message.author.send(json.dumps(dump, ensure_ascii=False, indent=4))
|
await message.author.send(json.dumps(dump, ensure_ascii=False, indent=4))
|
||||||
return
|
return
|
||||||
|
|
||||||
@ -221,12 +228,15 @@ async def on_message(message):
|
|||||||
|
|
||||||
last_word = get_last_word(message_content)
|
last_word = get_last_word(message_content)
|
||||||
if last_word:
|
if last_word:
|
||||||
poil = poil_auquel(message_content)
|
poil = poil_auquel(last_word)
|
||||||
if poil and time.time() - client.cooldown > 0:
|
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)
|
wait_time = random.randint(0, 900)
|
||||||
if bool(random.getrandbits(1)):
|
if bool(random.getrandbits(1)):
|
||||||
wait_time = random.randint(900, 10800)
|
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)
|
await message.channel.send(poil)
|
||||||
return
|
return
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user