absolute-destiny/bot.py

68 lines
1.4 KiB
Python

import discord
import random
import sys
client = discord.Client()
BOXED_NUMBERS = [
":zero:",
":one:",
":two:",
":three:",
":four:",
":five:",
":six:",
":seven:",
":eight:",
":nine:",
":keycap_ten:",
]
def boxed(n):
if 0 <= n and n < len(BOXED_NUMBERS):
return BOXED_NUMBERS[n]
else:
return "[{}]".format(n)
def succ(n):
if n <= 6:
return ':fire:'
elif 7 <= n and n <= 9:
return ':person_shrugging:'
else:
return ':tada:'
def roll(mod):
rolls = []
for i in range(2):
rolls.append(random.randint(1,6))
result = sum(rolls) + mod
message = '+'.join(boxed(r) for r in rolls)
message += '{:+}'.format(mod)
message += ' = **{}** {}'.format(result, succ(result))
return message
@client.event
async def on_ready():
print('logged in as {0.user}'.format(client), file=sys.stderr)
await client.change_presence(activity=discord.Game('!n for 2d6+n'))
@client.event
async def on_message(message):
if message.author == client.user:
return
if message.content.startswith('!'):
try:
mod=int(message.content.split()[0][1:])
except ValueError:
print('error parsing message {0}'.format(message.content), file=sys.stderr)
return
await message.channel.send(roll(mod))
with open('token') as f:
token = f.read().strip()
client.run(token)