Update
This commit is contained in:
parent
e013332e05
commit
b1e81e2c8d
|
@ -24,14 +24,7 @@ from nyx_bot.chat_functions import (
|
|||
from nyx_bot.config import Config
|
||||
from nyx_bot.errors import NyxBotRuntimeError, NyxBotValueError
|
||||
from nyx_bot.storage import MatrixMessage, MembershipUpdates, UserTag
|
||||
from nyx_bot.utils import (
|
||||
get_body,
|
||||
get_reply_to,
|
||||
make_divergence,
|
||||
parse_matrixdotto_link,
|
||||
parse_wordcloud_args,
|
||||
strip_beginning_quote,
|
||||
)
|
||||
from nyx_bot.utils import make_divergence, parse_matrixdotto_link, parse_wordcloud_args
|
||||
from nyx_bot.wordcloud import send_wordcloud
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
@ -308,15 +301,11 @@ class Command:
|
|||
)
|
||||
|
||||
async def _divergence(self):
|
||||
rehash = 0
|
||||
room_hash = crc32(self.room.room_id.encode())
|
||||
event_id_hash = None
|
||||
if self.reply_to:
|
||||
body = await get_body(
|
||||
self.client, self.room.room_id, self.event.event_id, self.replace_map
|
||||
)
|
||||
if get_reply_to(self.event):
|
||||
body = strip_beginning_quote(body)
|
||||
rehash += crc32(body.encode()) % 27
|
||||
text = "%.6f%%" % make_divergence(self.room, rehash)
|
||||
event_id_hash = crc32(self.reply_to.encode())
|
||||
text = "%.6f%%" % make_divergence(room_hash, event_id_hash)
|
||||
await send_text_to_room(
|
||||
self.client,
|
||||
self.room.room_id,
|
||||
|
|
|
@ -5,7 +5,6 @@ from io import StringIO
|
|||
from random import Random
|
||||
from typing import Dict, Optional, Tuple
|
||||
from urllib.parse import unquote, urlparse
|
||||
from zlib import crc32
|
||||
|
||||
from nio import AsyncClient, Event, MatrixRoom, RoomGetEventError, RoomMessageText
|
||||
|
||||
|
@ -140,11 +139,14 @@ def parse_matrixdotto_link(link: str):
|
|||
return "event", room, event_id
|
||||
|
||||
|
||||
def make_divergence(room: MatrixRoom, rehash: int):
|
||||
seed = crc32(room.room_id.encode())
|
||||
for i in range(rehash):
|
||||
seed += crc32(str(i).encode())
|
||||
divergence = Random(seed)
|
||||
divergence = Random()
|
||||
|
||||
|
||||
def make_divergence(room_hash: int, event_id_hash: Optional[int] = None):
|
||||
seed = room_hash
|
||||
if event_id_hash:
|
||||
seed += event_id_hash
|
||||
divergence.seed(seed)
|
||||
first_value = divergence.gammavariate(1, 0.5)
|
||||
if first_value >= 2:
|
||||
result = first_value * divergence.random()
|
||||
|
|
Loading…
Reference in New Issue