is_bot_operational
field on the Server model
All checks were successful
Build and Push Docker Image / build (push) Successful in 13s
All checks were successful
Build and Push Docker Image / build (push) Successful in 13s
True, False or None indicates if the bot is a member of said server, and has sufficient permissions to perform it's job. Starts as None (unknown) and becomes True or False when calling a server's `/generate-channels/` endpoint.
This commit is contained in:
parent
b324b6accb
commit
35c8e7582b
@ -10,16 +10,17 @@ from apps.home.models import (
|
||||
ContentFilter,
|
||||
MessageMutator,
|
||||
MessageStyle,
|
||||
UniqueContentRule,
|
||||
DiscordChannel,
|
||||
Subscription,
|
||||
Content,
|
||||
UniqueContentRule
|
||||
)
|
||||
|
||||
log = logging.getLogger(__name__)
|
||||
|
||||
|
||||
#region Dynamic Model
|
||||
# region Dynamic Model
|
||||
|
||||
# This DynamicModelSerializer is from a StackOverflow user in an obscure thread.
|
||||
# I wish that I could remember which thread, because god bless that man.
|
||||
|
||||
@ -119,12 +120,22 @@ class DynamicModelSerializer(serializers.ModelSerializer):
|
||||
abstract = True
|
||||
|
||||
|
||||
# region Servers
|
||||
|
||||
class ServerSerializer(DynamicModelSerializer):
|
||||
class Meta:
|
||||
model = Server
|
||||
fields = ("id", "name", "icon_hash", "active")
|
||||
fields = (
|
||||
"id",
|
||||
"name",
|
||||
"icon_hash",
|
||||
"is_bot_operational",
|
||||
"active"
|
||||
)
|
||||
|
||||
|
||||
# region Filters
|
||||
|
||||
class ContentFilterSerializer(DynamicModelSerializer):
|
||||
class Meta:
|
||||
model = ContentFilter
|
||||
@ -139,12 +150,16 @@ class ContentFilterSerializer(DynamicModelSerializer):
|
||||
)
|
||||
|
||||
|
||||
# region Msg Mutators
|
||||
|
||||
class MessageMutatorSerializer(DynamicModelSerializer):
|
||||
class Meta:
|
||||
model = MessageMutator
|
||||
fields = ("id", "name", "value")
|
||||
|
||||
|
||||
# region Msg Styles
|
||||
|
||||
class MessageStyleSerializer(DynamicModelSerializer):
|
||||
title_mutator_detail = serializers.SerializerMethodField()
|
||||
description_mutator_detail = serializers.SerializerMethodField()
|
||||
@ -183,12 +198,16 @@ class MessageStyleSerializer(DynamicModelSerializer):
|
||||
return {}
|
||||
|
||||
|
||||
# region Rules
|
||||
|
||||
class UniqueContentRuleSerializer(DynamicModelSerializer):
|
||||
class Meta:
|
||||
model = UniqueContentRule
|
||||
fields = ("id", "name", "value")
|
||||
|
||||
|
||||
# region Subscriptions
|
||||
|
||||
class DiscordChannelField(serializers.PrimaryKeyRelatedField):
|
||||
def to_internal_value(self, data):
|
||||
try:
|
||||
@ -299,6 +318,8 @@ class SubscriptionSerializer(DynamicModelSerializer):
|
||||
return data
|
||||
|
||||
|
||||
# region Content
|
||||
|
||||
class ContentSerializer(DynamicModelSerializer):
|
||||
class Meta:
|
||||
model = Content
|
||||
|
@ -16,8 +16,14 @@ from .models import (
|
||||
|
||||
@admin.register(Server)
|
||||
class ServerAdmin(admin.ModelAdmin):
|
||||
list_display = ["id", "name", "icon_hash", "active"]
|
||||
list_display_links = ["name"]
|
||||
list_display = [
|
||||
"id",
|
||||
"name",
|
||||
"icon_hash",
|
||||
"is_bot_operational",
|
||||
"active"
|
||||
]
|
||||
list_display_links = ["id"]
|
||||
|
||||
|
||||
@admin.register(ContentFilter)
|
||||
|
18
apps/home/migrations/0011_server_is_bot_operational.py
Normal file
18
apps/home/migrations/0011_server_is_bot_operational.py
Normal file
@ -0,0 +1,18 @@
|
||||
# Generated by Django 5.0.4 on 2024-10-11 16:10
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('home', '0010_discordchannel_name'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='server',
|
||||
name='is_bot_operational',
|
||||
field=models.BooleanField(default=False),
|
||||
),
|
||||
]
|
18
apps/home/migrations/0012_alter_server_is_bot_operational.py
Normal file
18
apps/home/migrations/0012_alter_server_is_bot_operational.py
Normal file
@ -0,0 +1,18 @@
|
||||
# Generated by Django 5.0.4 on 2024-10-11 16:19
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('home', '0011_server_is_bot_operational'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='server',
|
||||
name='is_bot_operational',
|
||||
field=models.BooleanField(default=None, null=True),
|
||||
),
|
||||
]
|
@ -23,6 +23,7 @@ class Server(models.Model):
|
||||
id = models.PositiveIntegerField(primary_key=True)
|
||||
name = models.CharField(max_length=128)
|
||||
icon_hash = models.CharField(max_length=128, blank=True, null=True)
|
||||
is_bot_operational = models.BooleanField(default=None, null=True)
|
||||
active = models.BooleanField(default=True)
|
||||
|
||||
class Meta:
|
||||
|
@ -158,10 +158,19 @@ class ChannelsView(View):
|
||||
|
||||
channels_data, status = await self._get_channel_data(guild_id)
|
||||
|
||||
# Not authorized means the bot isn't operational, we need to save that
|
||||
if status == 403:
|
||||
server.is_bot_operational = False
|
||||
await server.asave()
|
||||
|
||||
# Send back the error data if status is bad
|
||||
if status != 200:
|
||||
return JsonResponse(channels_data, status=status, safe=False)
|
||||
|
||||
# Because the status is 200, we know the Bot is functional, set that param
|
||||
server.is_bot_operational = True
|
||||
await server.asave()
|
||||
|
||||
cleaned_channels_data = await self._clean_channels_data(server, channels_data)
|
||||
await self._cleanup_dead_channels(server, cleaned_channels_data)
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user