7 Commits

Author SHA1 Message Date
44236eacec l 132 indentation error 2022-01-22 13:57:07 +00:00
be43d3e03a Added coroutine to defer response to interaction
This should compensate for the lag in the bot and fix the menu bug
2022-01-22 13:54:02 +00:00
f5097a9d2d Defined specific version number for image
Later images break wheel again.
2022-01-21 21:37:24 +00:00
42cf3afcb4 Bugfix: membership restriction scanning non-game servers 2022-01-21 21:24:44 +00:00
6ec8613b7f Added container name 2021-08-07 08:50:07 +01:00
5135786ef6 Documentation updates.
Pushing changes and merging branch for a v3.0.1 patch.
Not updating further this time as call-backs won't work.
2021-08-07 08:46:59 +01:00
3849dc4927 Changed restart flag. 2021-08-06 12:51:21 +01:00
8 changed files with 22 additions and 10 deletions

View File

@@ -1,6 +1,6 @@
# Changelog
## Minor Updates in Version 3.1
## Minor Updates in Version 3.0.1
- Re-builds the Docker image to use a `python:slim` base instead of `python:buster`, reducing the footprint of the image to a quarter of its previous size.

View File

@@ -219,5 +219,6 @@ Programming around this will need a further layer of complexity, involving flags
I have set the member verification prompt to use a global listener to avoid a situation where it creates several backlogged processes when multiple people post sign-ups at the same time.
This should also mean that the sign-up prompts should persist over reboots.
The best possible way of setting this up is probably using functions to dynamically set up and remove component call-backs.
Also components do not need to all have unique names, just unique names in the message they are part of.
Other developers for Discord Components recommended the use of dynamic call-backs, however these do not persist after reboots so are not suitable for this purpose.
Discord will need to make substantial API updates in the future for rolling out the Threads feature.
The bot will need updating again then.

View File

@@ -8,4 +8,4 @@
- [ ] Add support for Discord Threads following Discord Py library update
- [ ] Update permission settings for GMs on game channels to support threads
- [ ] Change component response architecture to use dynamic callback functions instead of global listeners.
- [ ] ~~Change component response architecture to use dynamic callback functions instead of global listeners.~~ Not suitable because it does not provide persistence across reboots.

View File

@@ -1,7 +1,7 @@
FROM python:slim
FROM python:3.9.6-slim
COPY . /usr/src/app
WORKDIR /usr/src/app
RUN apt-get update -y && apt-get upgrade -y && apt-get install libopus0 -y && \
pip install --upgrade pip && pip install -r requirements.txt && \
pip install --upgrade pip setuptools wheel && pip install -r requirements.txt && \
apt-get autoremove -y
CMD python3 -u ./bot.py

View File

@@ -17,6 +17,15 @@ class PitchListener(commands.Cog, name='Pitch Listener'):
def __init__(self, client):
self.client = client
@commands.Cog.listener(name='on_component')
async def _response_defer(self, ctx:ComponentContext):
pitches = yaml_load(pitchesFile)
guildStr = str(ctx.guild.id)
if not pitches.get(guildStr, {}): return # If no pitches for current guild, ignore.
[timeslot] = [*pitches[guildStr]]
if ctx.origin_message.id not in pitches[guildStr][timeslot]['messages'] + [pitches[guildStr][timeslot]['control']]: return # If the context id is not in the pitch menu, ignore
await ctx.defer(hidden = True)
@commands.Cog.listener(name='on_component')
async def _pitch_listener(self, ctx:ComponentContext):
conf = yaml_load(configFile)

View File

@@ -23,7 +23,8 @@ class RestrictionListener(commands.Cog, name='Membership Restriction Listener'):
lookup = yaml_load(lookupFile)
if not conf[guildStr].get('restrict',False): return
if message.author.bot: return
if str(message.channel.category) in categories[guildStr]: return
if message.channel.category is None: return
if str(message.channel.category.id) not in categories[guildStr]: return
if (set(message.author.roles) & set([message.guild.get_role(x) for x in conf[guildStr]['roles']['admin']]) or message.author == message.guild.owner): return
if set(message.author.roles) & set([message.guild.get_role(x) for x in conf[guildStr]['membership']]): return
if message.channel.overwrites_for(message.author).manage_channels: return

View File

@@ -129,7 +129,7 @@ class Configuration(commands.Cog, name='Configuration Commands'):
if self.client.get_cog('Pitch Command') is None:
loadCog(f'./{cogsDir}/slashcommands/secondary/pitch.py')
flag = True
if flag: await self.client.slash.sync_all_commands()
if flag: await self.client.slash.sync_all_commands()
@cog_ext.cog_subcommand(
base='config',

View File

@@ -1,8 +1,9 @@
version: '3.1'
version: '3.5'
services:
geasbot-app:
build: ./app
container_name: geas_bot
volumes:
- ./app:/usr/src/app
restart: always
restart: unless-stopped