112 lines
3.9 KiB
Python
112 lines
3.9 KiB
Python
import discord
|
|
#from discord import app_commands
|
|
from NarratorAi import setScene, setItem, setRollDice
|
|
import random
|
|
import flask
|
|
import bridges
|
|
from threading import Thread
|
|
import requests
|
|
|
|
guild_id = 954201387770736751
|
|
|
|
intents = discord.Intents.default()
|
|
intents.message_content = True
|
|
|
|
client = discord.Client(intents=intents)
|
|
tree = discord.app_commands.CommandTree(client)
|
|
|
|
|
|
|
|
@tree.command(name="roll_die",
|
|
description="Ask NARC to roll dice for you with flair.",
|
|
guild=discord.Object(id=guild_id)
|
|
)
|
|
async def roll_die(interaction, num_sides: str):
|
|
channel = client.get_channel(interaction.channel_id)
|
|
person = interaction.user.display_name
|
|
result = random.randint(1, int(num_sides))
|
|
await interaction.response.defer(ephemeral=False, thinking=False)
|
|
scene = await setRollDice(person, num_sides, result)
|
|
await channel.send(f"*{scene}*")
|
|
await interaction.delete_original_response()
|
|
|
|
|
|
@tree.command(name="give_item",
|
|
description="Ask NARC for an item.",
|
|
guild=discord.Object(id=guild_id)
|
|
)
|
|
async def give_item(interaction, item: str):
|
|
channel = client.get_channel(interaction.channel_id)
|
|
person = interaction.user.display_name
|
|
await interaction.response.defer(ephemeral=False, thinking=False)
|
|
scene = await setItem(item, person)
|
|
await channel.send(f"*{scene}*")
|
|
await interaction.delete_original_response()
|
|
|
|
@tree.command(name="set_scene",
|
|
description="Provide a prompt for the narrator to set a scene",
|
|
guild=discord.Object(id=guild_id)
|
|
)
|
|
async def set_scene(interaction, prompt: str):
|
|
channel = client.get_channel(interaction.channel_id)
|
|
await interaction.response.defer(ephemeral=False, thinking=False)
|
|
scene = await setScene(prompt=prompt)
|
|
await channel.send(f"*{scene}*")
|
|
await interaction.delete_original_response()
|
|
|
|
|
|
|
|
@tree.command(name="narrate", description="This is a command to narrate", guild=discord.Object(id=guild_id))
|
|
async def narrate(interaction, text: str):
|
|
channel = client.get_channel(interaction.channel_id)
|
|
await interaction.response.defer(ephemeral=False, thinking=False)
|
|
await channel.send(f"*{text}*")
|
|
await interaction.delete_original_response()
|
|
|
|
@client.event
|
|
async def on_ready():
|
|
await tree.sync(guild=discord.Object(id=guild_id))
|
|
print(f'We have logged in as {client.user}')
|
|
|
|
|
|
channels = {
|
|
1125968295967850559: ("our-comforter", 'final-fantasy-14'), #comforter
|
|
954201387770736754: ("lounge", 'final-fantasy-14'), #lounge
|
|
1119502004721557554: ("town-square", 'Treehousefullofstars'), # kweh
|
|
1367978276185964584: ("misskey", 'Treehousefullofstars'), #misskey
|
|
1167176429797113926: ("photos-from-another-star", 'final-fantasy-14'), #photos-from-another-star
|
|
1119508652844404816: ("bulletin-board", 'Treehousefullofstars'), #bulletin-board
|
|
955394194766192690: ("photos-of-the-gang", 'final-fantasy-14'), #photos-of-the-gang
|
|
1381391455574167653: ("stream", 'Treehousefullofstars'),
|
|
}
|
|
|
|
@client.event
|
|
async def on_message(message):
|
|
if message.author == client.user:
|
|
return
|
|
|
|
if not message.webhook_id and message.channel.id in channels.keys():
|
|
bridges.send_discord_to_mattermost(message, channel_to=channels[message.channel.id])
|
|
|
|
|
|
async def send_custom_message(channel: discord.TextChannel, message, username, user_id, avatar_url=None):
|
|
if user_id:
|
|
print(user_id)
|
|
member = await channel.guild.fetch_member(user_id)
|
|
avatar_url = member.display_avatar.url
|
|
username = member.nick
|
|
elif avatar_url:
|
|
avatar_url = avatar_url
|
|
else:
|
|
avatar_url = ""
|
|
|
|
print(avatar_url)
|
|
webhook = await channel.create_webhook(name=username)
|
|
await webhook.send(message, username=username, avatar_url=avatar_url)
|
|
await webhook.delete()
|
|
|
|
token = "MTMyNzcxNDM3MTEyMzgxMDMwNA.GwLjEd.quGP0FA5gHRe1xLyuYq-ANuJ5cRuRQ6dhJiojI"
|
|
client.run(token)
|
|
|
|
|