This commit is contained in:
osmarks 2023-07-19 14:51:52 +01:00
parent 8cf67088ae
commit de835dfe08
6 changed files with 27 additions and 5 deletions

3
.gitignore vendored
View File

@ -2,4 +2,5 @@ config.toml
bot-data.json
__pycache__
data.sqlite3
ts.py
ts.py
deploy.sh

13
requirements.txt Normal file
View File

@ -0,0 +1,13 @@
# TODO
pytio==0.3.1
aiohttp==3.8.3
aiosqlite==0.17.0
nextcord==2.0.0b4
numpy==1.23
prometheus-async==19.2.0
prometheus-client==0.15.0
pydot==1.4.2
toml==0.10.2
requests==2.28.1
python-dateutil==2.8.2
irc==20.1.0

View File

@ -100,6 +100,9 @@ DELETE FROM user_data WHERE guild_id IS NULL;
""",
"""
ALTER TABLE links ADD COLUMN cause TEXT;
""",
"""
ALTER TABLE telephone_config ADD COLUMN disabled INTEGER;
"""
]

View File

@ -27,6 +27,8 @@ logging.basicConfig(level=logging.INFO, format="%(levelname)s %(asctime)s %(mess
intents = discord.Intents.default()
intents.members = True
intents.presences = True
intents.message_content = True
bot = commands.Bot(command_prefix=commands.when_mentioned_or(config["prefix"]), description="AutoBotRobot, the most useless bot in the known universe." + util.config.get("description_suffix", ""),
case_insensitive=True, allowed_mentions=discord.AllowedMentions(everyone=False, users=True, roles=True), intents=intents)

View File

@ -91,7 +91,7 @@ class Reminders(commands.Cog):
async def send_by_dm(self, info, text):
user = self.bot.get_user(info["author_id"])
if not user:
user = await bot.fetch_user(info["author_id"])
user = await self.bot.fetch_user(info["author_id"])
if not user: raise Exception(f"user {info['author_id']} unavailable/nonexistent")
if not user.dm_channel: await user.create_dm()
await user.dm_channel.send(text)

View File

@ -283,14 +283,14 @@ When you want to end a call, use hangup.
except discord.Forbidden as f:
logging.warn("Could not create webhook in #%s %s", ctx.channel.name, ctx.guild.name, exc_info=f)
await ctx.send("Webhook creation failed - please ensure permissions are available. This is not necessary but is recommended.")
await self.bot.database.execute("INSERT OR REPLACE INTO telephone_config VALUES (?, ?, ?, ?)", (num, ctx.guild.id, ctx.channel.id, webhook))
await self.bot.database.execute("INSERT OR REPLACE INTO telephone_config VALUES (?, ?, ?, ?, 0)", (num, ctx.guild.id, ctx.channel.id, webhook))
await self.bot.database.commit()
await ctx.send("Configured.")
@telephone.command(aliases=["rcall"], brief="Dial another telephone channel.")
async def rdial(self, ctx):
# TODO: this is not very performant
random = (await self.bot.database.execute_fetchone("SELECT id FROM telephone_config ORDER BY RANDOM()"))["id"]
random = (await self.bot.database.execute_fetchone("SELECT id FROM telephone_config WHERE disabled = 0 ORDER BY RANDOM()"))["id"]
await self.dial(ctx, random)
@telephone.command(aliases=["call"], brief="Dial another telephone channel.")
@ -308,6 +308,9 @@ When you want to end a call, use hangup.
# post embed in the receiving channel prompting people to accept/decline call
recv_channel = self.bot.get_channel(recv_info["channel_id"])
if recv_channel is None:
await self.bot.database.execute("UPDATE telephone_config SET disabled = 1 WHERE id = ?", (address,))
return await ctx.send(embed=util.error_embed("Target channel no longer exists."))
_, call_message = await asyncio.gather(
ctx.send(embed=util.info_embed("Outgoing call", f"Dialing {address}...")),
recv_channel.send(embed=util.info_embed("Incoming call",
@ -418,7 +421,7 @@ When you want to end a call, use hangup.
seen_edges.add(edge)
seen.add(current)
(handle, tmppath) = tempfile.mkstemp(".png", "graphviz")
graph.write_png(tmppath)
graph.write_png(tmppath, prog="neato")
try:
await ctx.send(file=discord.File(handle, filename="out.png"))
finally: