2023-05-07 15:58:01 -06:00
import subprocess
2023-05-07 14:00:46 -06:00
from discord . ext import commands
2024-04-11 12:55:02 -04:00
from discord . ui import Button
2023-05-07 14:00:46 -06:00
import discord
2024-04-11 12:55:02 -04:00
import datetime
2023-05-07 14:00:46 -06:00
from utils import Config
2024-04-15 16:28:51 -04:00
VERSION = " 1.0.4 "
2023-05-07 14:00:46 -06:00
INTENTS = discord . Intents . default ( )
INTENTS . message_content = True
INTENTS . members = True
class Bot ( commands . Bot ) :
def __init__ ( self , config : Config , / ) - > None :
super ( ) . __init__ (
intents = INTENTS ,
command_prefix = commands . when_mentioned_or ( config . prefix ) ,
allowed_mentions = discord . AllowedMentions ( everyone = False ) ,
case_insensitive = True ,
2023-05-07 16:20:01 -06:00
activity = discord . Activity (
type = discord . ActivityType . watching , name = " the devs... "
) ,
2023-05-07 14:00:46 -06:00
)
self . config = config
2023-05-07 16:02:34 -06:00
self . version = VERSION
2023-05-07 14:00:46 -06:00
async def setup_hook ( self ) - > None :
for extension in self . config . extensions :
await self . load_extension ( extension )
2023-05-07 15:58:01 -06:00
await self . add_cog ( CoreCog ( self ) )
class CoreCog ( commands . Cog , name = " Core " ) :
def __init__ ( self , bot : Bot ) - > None :
self . bot = bot
def _get_version ( self ) - > str :
return (
subprocess . check_output ( [ " git " , " rev-parse " , " --short " , " HEAD " ] )
. decode ( " ascii " )
. strip ( )
)
2023-09-17 21:57:16 -06:00
@commands.Cog.listener ( )
async def on_ready ( self ) - > None :
2024-04-11 12:55:02 -04:00
print ( " The News Bot is now ready. " )
2024-04-15 16:28:51 -04:00
# channel = self.bot.get_channel(611922107345141760)
# embed=discord.Embed(title=f"The News Bot is now online!",description="Hello! Please use the below command to summon the embed editor. ```&embed create```", color=0x00FFFF)
# embed.timestamp = datetime.datetime.now()
# await channel.send(embed=embed)
2023-09-17 21:57:16 -06:00
2023-09-20 19:12:22 -06:00
@commands.Cog.listener ( )
async def on_message ( self , message : discord . Message ) - > None :
if (
message . channel . id in self . bot . config . publish_channels
and message . channel . type is discord . ChannelType . news
) :
try :
await message . publish ( )
except discord . Forbidden :
pass
2024-03-10 00:21:05 -05:00
# @commands.Cog.listener()
# async def on_message(self, message):
# if message.channel.id == 649390966259580929 and message.author.id != 1091116499936223252:
# if message.embeds:
# for embed in message.embeds:
# reply_channel = self.bot.get_channel(611922107345141760)
# if "Patch Notes" in embed.title:
# await reply_channel.send(f"<@&159107041896562688> CIG has published new [Patch Notes](<{embed.url}>).")
# elif "Galactapedia" in embed.title:
# await reply_channel.send(f"<@&159107041896562688> CIG has published a new [Galactapedia update](<{embed.url}>).")
# elif "This Week in Star Citizen" in embed.title:
# await reply_channel.send(f"<@&159107041896562688> CIG has published a new [TWISC](<{embed.url}>).")
# elif "Monthly Report" in embed.title:
# await reply_channel.send(f"<@&159107041896562688> CIG has published a new [Monthly Report](<{embed.url}>).")
2023-05-07 15:58:01 -06:00
@commands.hybrid_command ( description = " Shows you some info about the bot. " )
async def info ( self , ctx : commands . Context ) - > None :
embed = discord . Embed (
color = self . bot . config . embed_color ,
2023-09-17 21:57:16 -06:00
title = " Info " ,
2024-03-10 00:21:05 -05:00
description = " The SC News Bot is a bot created for the r/starcitizen Discord server to help with writing news posts. " ,
2023-05-07 16:02:46 -06:00
)
2023-10-26 09:26:31 -04:00
# embed.add_field(
# name="Version", value=f"v{self.bot.version}+{self._get_version()}"
# )
2023-05-07 15:58:01 -06:00
embed . add_field (
name = " Library " , value = f " discord.py v { discord . __version__ } " , inline = False
)
2023-09-17 21:57:16 -06:00
embed . add_field (
name = " Authors " ,
2024-04-15 16:28:51 -04:00
value = f " <@288522211164160010> and <@998070081709932654> " ,
2023-09-17 21:57:16 -06:00
)
2024-04-15 17:50:22 -04:00
embed . add_field (
name = " Production Code " ,
value = f " [Link](https://github.com/hencaric/SCNewsBot) " ,
)
2023-05-07 16:00:59 -06:00
view = discord . ui . View ( )
view . add_item (
discord . ui . Button (
2024-04-15 17:50:22 -04:00
label = " Source Code for Public Use " ,
2023-05-07 16:00:59 -06:00
url = " https://github.com/mudkipdev/scnewsbot " ,
style = discord . ButtonStyle . link ,
)
)
await ctx . reply ( embed = embed , view = view , mention_author = False )