fulvia/modules/rand.py
2020-01-07 18:58:19 -05:00

58 lines
1.5 KiB
Python
Executable File

#!/usr/bin/env python3
"""
Pick some random numbers.
"""
import sys
import random
import string
from module import commands, example
@commands("rand")
@example(".rand 2", "random(0, 2) = 1")
@example(".rand -1 -1", "random(-1, -1) = -1")
@example(".rand", "random(0, 56) = 13")
@example(".rand 99 10", "random(10, 99) = 53")
@example(".rand 10 99", "random(10, 99) = 29")
def rand(bot, trigger):
"""Replies with a random number between first and second argument."""
arg1 = trigger.args[1] if len(trigger.args) >= 2 else 0
arg2 = trigger.args[2] if len(trigger.args) >= 3 else sys.maxsize
try:
low = int(arg1)
high = int(arg2)
except (ValueError, TypeError):
return bot.reply("Arguments must be of integer type")
if low > high:
low, high = high, low
number = random.randint(low, high)
bot.reply(f"random({low}, {high}) = {number}")
@commands('letters')
@example('.letters', 'iloynlle')
@example('.letters 16', 'oaotordbwaauouxk')
def rand_letters(bot, trigger):
"""
usage: .letters [num_letters] [num_vowels]
Generates a series of string of random letters.
"""
arg1 = trigger.args[1] if len(trigger.args) >= 2 else 8
arg2 = trigger.args[2] if len(trigger.args) >= 3 else 2
try:
num_letters = int(arg1)
num_vowels = int(arg2)
except (ValueError, TypeError):
return bot.reply("Arguments must be of integer type")
msg = []
for _ in range(num_letters):
c = random.choice(string.ascii_lowercase + "aioue" * num_vowels)
msg.append(c)
bot.msg(''.join(msg))