Compare commits
5 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d137f220cc | ||
|
|
00323f99fb | ||
|
|
6237ccf8b6 | ||
|
|
f402293c99 | ||
|
|
99effad710 |
@@ -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
|
||||||
@@ -167,12 +168,12 @@ class FlanaBot(MultiBot, ABC):
|
|||||||
last_2s_messages = Message.find({
|
last_2s_messages = Message.find({
|
||||||
'platform': self.platform.value,
|
'platform': self.platform.value,
|
||||||
'author': message.author.object_id,
|
'author': message.author.object_id,
|
||||||
'last_update': {'$gte': datetime.datetime.now(datetime.timezone.utc) - datetime.timedelta(seconds=2)}
|
'date': {'$gte': datetime.datetime.now(datetime.timezone.utc) - datetime.timedelta(seconds=2)}
|
||||||
})
|
})
|
||||||
last_7s_messages = Message.find({
|
last_7s_messages = Message.find({
|
||||||
'platform': self.platform.value,
|
'platform': self.platform.value,
|
||||||
'author': message.author.object_id,
|
'author': message.author.object_id,
|
||||||
'last_update': {'$gte': datetime.datetime.now(datetime.timezone.utc) - datetime.timedelta(seconds=7)}
|
'date': {'$gte': datetime.datetime.now(datetime.timezone.utc) - datetime.timedelta(seconds=7)}
|
||||||
})
|
})
|
||||||
|
|
||||||
if len(last_2s_messages) >= constants.FLOOD_2s_LIMIT or len(last_7s_messages) >= constants.FLOOD_7s_LIMIT:
|
if len(last_2s_messages) >= constants.FLOOD_2s_LIMIT or len(last_7s_messages) >= constants.FLOOD_7s_LIMIT:
|
||||||
@@ -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:
|
||||||
|
|||||||
@@ -21,9 +21,10 @@ HEAT_NAMES = [
|
|||||||
'Canal Caliente',
|
'Canal Caliente',
|
||||||
'Canal Olor a Vasco',
|
'Canal Olor a Vasco',
|
||||||
'Verano Cordobés al Sol',
|
'Verano Cordobés al Sol',
|
||||||
'Canal Ardiendo',
|
|
||||||
'abrid las putas ventanas y traed el extintor',
|
'abrid las putas ventanas y traed el extintor',
|
||||||
'Canal INFIERNO'
|
'Canal Ardiendo',
|
||||||
|
'Canal INFIERNO',
|
||||||
|
'🔥🔥🔥🔥🔥🔥🔥'
|
||||||
]
|
]
|
||||||
HOT_CHANNEL_ID = 493530483045564417
|
HOT_CHANNEL_ID = 493530483045564417
|
||||||
|
|
||||||
|
|||||||
@@ -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'),
|
||||||
|
|||||||
Reference in New Issue
Block a user