3 Commits

Author SHA1 Message Date
AlberLC
6237ccf8b6 Fix _on_choose 2022-06-27 04:59:14 +02:00
AlberLC
f402293c99 Upgrade _on_choose 2022-06-27 04:22:47 +02:00
AlberLC
99effad710 Fix constants accents 2022-06-23 04:51:49 +02:00
2 changed files with 37 additions and 11 deletions

View File

@@ -2,6 +2,7 @@ __all__ = ['FlanaBot']
import asyncio import asyncio
import datetime import datetime
import math
import random import random
import re import re
import time as time_module import time as time_module
@@ -303,21 +304,46 @@ class FlanaBot(MultiBot, ABC):
if message.chat.is_group and not self.is_bot_mentioned(message): if message.chat.is_group and not self.is_bot_mentioned(message):
return return
discarded_words = {*constants.KEYWORDS['choose'], *constants.KEYWORDS['random'], self.name.lower(), f'<@{self.id}>'} discarded_words = {
*constants.KEYWORDS['choose'],
*constants.KEYWORDS['random'],
self.name.lower(), f'<@{self.id}>',
*flanautils.CommonWords.get('conjunctions'),
'entre', 'between'
}
if final_words := [word for word in message.text.split() if not flanautils.cartesian_product_string_matching(word.lower(), discarded_words, min_ratio=multibot_constants.PARSE_CALLBACKS_MIN_RATIO_DEFAULT)]: if final_words := [word for word in message.text.split() if not flanautils.cartesian_product_string_matching(word.lower(), discarded_words, min_ratio=multibot_constants.PARSE_CALLBACKS_MIN_RATIO_DEFAULT)]:
for i in range(1, len(final_words) - 1):
try:
n1 = flanautils.cast_number(final_words[i - 1])
except ValueError:
try:
n1 = flanautils.words_to_numbers(final_words[i - 1], ignore_no_numbers=False)
except KeyError:
continue
try:
n2 = flanautils.cast_number(final_words[i + 1])
except ValueError:
try:
n2 = flanautils.words_to_numbers(final_words[i + 1], ignore_no_numbers=False)
except KeyError:
continue
if final_words[i] in ('al', 'el', 'to'):
await self.send(random.randint(math.ceil(n1), math.floor(n2)), message)
return
await self.send(random.choice(final_words), message) await self.send(random.choice(final_words), message)
else: else:
await self.send(random.choice(('¿Que elija el qué?', '¿Y las opciones?', '?', '🤔')), message) await self.send(random.choice(('¿Que elija el qué?', '¿Y las opciones?', '?', '🤔')), message)
async def _on_config_button_press(self, message: Message): async def _on_config_button_press(self, message: Message):
await self._accept_button_event(message) await self.accept_button_event(message)
if message.buttons_info.presser_user.is_admin is False: if message.buttons_info.presser_user.is_admin is False:
return return
config = message.buttons_info.pressed_text.split()[1] config = message.buttons_info.pressed_text.split()[1]
message.chat.config[config] = not message.chat.config[config] message.chat.config[config] = not message.chat.config[config]
pressed_button = message.buttons_info[message.buttons_info.pressed_text] pressed_button = message.buttons_info.pressed_button
pressed_button.is_checked = not pressed_button.is_checked pressed_button.is_checked = not pressed_button.is_checked
pressed_button.text = f"{'' if pressed_button.is_checked else ''} {config}" pressed_button.text = f"{'' if pressed_button.is_checked else ''} {config}"
@@ -388,7 +414,7 @@ class FlanaBot(MultiBot, ABC):
return return
if top_number := flanautils.sum_numbers_in_text(message.text): if top_number := flanautils.sum_numbers_in_text(message.text):
await self.send(random.randint(1, top_number), message) await self.send(random.randint(1, math.floor(top_number)), message)
else: else:
await self.send(random.choice(('¿De cuántas caras?', '¿Y el número?', '?', '🤔')), message) await self.send(random.choice(('¿De cuántas caras?', '¿Y el número?', '?', '🤔')), message)
@@ -451,7 +477,7 @@ class FlanaBot(MultiBot, ABC):
await self.send(random.choice(('¿Y las opciones?', '?', '🤔')), message) await self.send(random.choice(('¿Y las opciones?', '?', '🤔')), message)
async def _on_poll_button_press(self, message: Message): async def _on_poll_button_press(self, message: Message):
await self._accept_button_event(message) await self.accept_button_event(message)
if not message.contents['poll']['is_active']: if not message.contents['poll']['is_active']:
return return
@@ -636,7 +662,7 @@ class FlanaBot(MultiBot, ABC):
await self.unpunish(user, message, message) await self.unpunish(user, message, message)
async def _on_weather_button_press(self, message: Message): async def _on_weather_button_press(self, message: Message):
await self._accept_button_event(message) await self.accept_button_event(message)
match message.buttons_info.pressed_text: match message.buttons_info.pressed_text:
case WeatherEmoji.ZOOM_IN.value: case WeatherEmoji.ZOOM_IN.value:
@@ -699,7 +725,7 @@ class FlanaBot(MultiBot, ABC):
- flanautils.cartesian_product_string_matching(original_text_words, multibot_constants.KEYWORDS['date'], min_ratio=0.85).keys() - flanautils.cartesian_product_string_matching(original_text_words, multibot_constants.KEYWORDS['date'], min_ratio=0.85).keys()
- flanautils.cartesian_product_string_matching(original_text_words, multibot_constants.KEYWORDS['thanks'], min_ratio=0.85).keys() - flanautils.cartesian_product_string_matching(original_text_words, multibot_constants.KEYWORDS['thanks'], min_ratio=0.85).keys()
- possible_mentioned_ids - possible_mentioned_ids
- flanautils.CommonWords.all_words - flanautils.CommonWords.get()
) )
if not place_words: if not place_words:
if not message.is_inline: if not message.is_inline:

View File

@@ -28,8 +28,8 @@ INSULTS = (
'Baneito pa ti en breve.', 'Baneito pa ti en breve.',
'Calla noob.', 'Calla noob.',
'Cansino.', 'Cansino.',
'Cuentame menos.', 'Cuéntame menos.',
'Cuentame más.', 'Cuéntame más.',
'Cállate ya anda.', 'Cállate ya anda.',
'Cállate.', 'Cállate.',
'Das penilla.', 'Das penilla.',
@@ -51,7 +51,7 @@ INSULTS = (
'Más tonto y no naces.', 'Más tonto y no naces.',
'No eres muy avispado tú...', 'No eres muy avispado tú...',
'Pesado.', 'Pesado.',
'Que bien, ¿eh?', 'Qué bien, ¿eh?',
'Que me dejes en paz.', 'Que me dejes en paz.',
'Qué pesado.', 'Qué pesado.',
'Quita bicho.', 'Quita bicho.',
@@ -85,7 +85,7 @@ INSULTS = (
) )
KEYWORDS = { KEYWORDS = {
'choose': ('choose', 'elige'), 'choose': ('choose', 'elige', 'escoge'),
'covid_chart': ('case', 'caso', 'contagiado', 'contagio', 'corona', 'coronavirus', 'covid', 'covid19', 'death', 'covid_chart': ('case', 'caso', 'contagiado', 'contagio', 'corona', 'coronavirus', 'covid', 'covid19', 'death',
'disease', 'enfermedad', 'enfermos', 'fallecido', 'incidencia', 'jacovid', 'mascarilla', 'muerte', 'disease', 'enfermedad', 'enfermos', 'fallecido', 'incidencia', 'jacovid', 'mascarilla', 'muerte',
'muerto', 'pandemia', 'sick', 'virus'), 'muerto', 'pandemia', 'sick', 'virus'),