Skip to content

Commit 300b360

Browse files
authored
76 refactor update bot version (#89)
* Added init files * Bumped discord.py 1.7.3 -> 2.1.0 * Reoading cogs is now asynchronous * Output of what commands where invoked is now better readable in discord * Now bots gets all intents * Changed 'User.avatar_url' to 'User.avatar' as in https://discordpy.readthedocs.io/en/stable/migrating.html\#major-webhook-changes * Check all areas which could get unwanted Thread object back instead of a TextChannel * Fixed bug where 'textwl' and 'voicebl' do not output guild name * Made start script executable * Starting bot asynchronously instead of blocking * Bumped bot version
1 parent 2778112 commit 300b360

15 files changed

Lines changed: 88 additions & 96 deletions

cogs/__init__.py

Whitespace-only changes.

cogs/commandgiverole.py

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -342,9 +342,7 @@ def search_table(self, channel_id, message_id):
342342
table_temp = self.get_table_content(table_name)
343343
table_mid = table_temp["messageid"]
344344
table_cid = table_temp["channelid"]
345-
if str(channel_id) == str(table_cid) and str(message_id) == str(
346-
table_mid
347-
):
345+
if str(channel_id) == str(table_cid) and str(message_id) == str(table_mid):
348346
table_content = table_temp
349347
break
350348
return table_content
@@ -462,5 +460,5 @@ def check_content_table(self, content):
462460
return (True, None)
463461

464462

465-
def setup(bot):
466-
bot.add_cog(Commandgiverole(bot))
463+
async def setup(bot):
464+
await bot.add_cog(Commandgiverole(bot))

cogs/commandlistener.py

Lines changed: 18 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,7 @@ def __init__(self, bot):
2323

2424
@commands.Cog.listener()
2525
async def on_command_error(self, ctx, error):
26-
print(
27-
"Ignoring exception in command {}:".format(ctx.command), file=sys.stderr
28-
)
26+
print("Ignoring exception in command {}:".format(ctx.command), file=sys.stderr)
2927
traceback.print_exception(
3028
type(error), error, error.__traceback__, file=sys.stderr
3129
)
@@ -50,7 +48,7 @@ async def on_ready(self):
5048
# Sends message to mods, when bot is online
5149
print("Now Online")
5250
await self.utils.sendModsMessage(
53-
"Bot is now online.\nVersion:\tDiscordBot DataBot v2.0.1"
51+
"Bot is now online.\nVersion:\tDiscordBot DataBot v2.1.0"
5452
)
5553

5654
# When a member joins a guild
@@ -61,8 +59,7 @@ async def on_member_join(self, member):
6159
6260
Creates a welcome message in the log channel
6361
"""
64-
channel = self.bot.get_channel(
65-
int(self.jh.getFromConfig("logchannel")))
62+
channel = self.bot.get_channel(int(self.jh.getFromConfig("logchannel")))
6663
guild = self.bot.get_guild(int(self.jh.getFromConfig("guild")))
6764
await channel.send(f"Hey **{member.mention}**, welcome to {guild}")
6865

@@ -81,8 +78,7 @@ async def on_member_remove(self, member):
8178
8279
Sends a goodbye message in the log channel
8380
"""
84-
channel = self.bot.get_channel(
85-
int(self.jh.getFromConfig("logchannel")))
81+
channel = self.bot.get_channel(int(self.jh.getFromConfig("logchannel")))
8682
guild = self.bot.get_guild(int(self.jh.getFromConfig("guild")))
8783
await channel.send(
8884
f"**{member.name}** has left {guild}. Press F to pay respect."
@@ -95,7 +91,7 @@ async def on_member_remove(self, member):
9591
[hash, code] = self.utils.hashData(voice, text, textCount, member.id)
9692
#Send user data
9793
embed = discord.Embed(title=f"{member.nick} ({member.name})", color=12008408)
98-
embed.set_thumbnail(url=member.avatar_url)
94+
embed.set_thumbnail(url=member.avatar)
9995
embed.add_field(name="VoiceXP", value=f"{voice}", inline=True)
10096
embed.add_field(name="TextXP", value=f"{text}", inline=True)
10197
embed.add_field(name="TextMessages", value=f"{textCount}", inline=True)
@@ -210,8 +206,7 @@ async def on_raw_reaction_add(self, payload):
210206
not (message.author.bot or payload.member.bot)
211207
and self.jh.getFromConfig("log") == "True"
212208
):
213-
self.jh.addReactionXP(
214-
payload.user_id, self.xpf.randomRange(1, 5))
209+
self.jh.addReactionXP(payload.user_id, self.xpf.randomRange(1, 5))
215210
self.jh.saveData()
216211

217212
# When a user changes his voice state
@@ -247,10 +242,7 @@ async def on_voice_state_update(self, member, before, after):
247242
and before.channel.name[-1].isdigit()
248243
):
249244
# Member left first channel
250-
if (
251-
before.channel.name[-1] == "1"
252-
and not before.channel.name[-2].isdigit()
253-
):
245+
if before.channel.name[-1] == "1" and not before.channel.name[-2].isdigit():
254246
# Delete last channel, which has no user in it
255247

256248
channelWithoutNumber = before.channel.name[:-1]
@@ -302,8 +294,7 @@ async def on_voice_state_update(self, member, before, after):
302294
# in it
303295
if afterNumber and len(
304296
find(
305-
lambda c: c.name == (
306-
channelWithoutNumber + "1"), allChannel
297+
lambda c: c.name == (channelWithoutNumber + "1"), allChannel
307298
).members
308299
):
309300
# Get channels with after.channel.name without numbers in it and end
@@ -363,9 +354,10 @@ async def on_message(self, message):
363354
a = "" + message.content
364355

365356
# Stops user from writting in levelchannel none command messages
366-
if str(message.channel.id) == str(
367-
self.jh.getFromConfig("levelchannel")
368-
) and a[0] != self.jh.getFromConfig("command_prefix"):
357+
print(a)
358+
if str(message.channel.id) == str(self.jh.getFromConfig("levelchannel")) and a[
359+
0
360+
] != self.jh.getFromConfig("command_prefix"):
369361
await message.delete()
370362
return
371363

@@ -400,11 +392,13 @@ async def on_message(self, message):
400392
except Exception:
401393
channelName = "DM"
402394
string = (
403-
"\n######\n# User "
395+
"\n```User "
404396
+ str(message.author.name)
405397
+ "tried to invoke a command in "
406398
+ str(channelName)
407-
+ ".\n# Command: {a}\n######"
399+
+ ".\nCommand: "
400+
+ a
401+
+ "```\n"
408402
)
409403
await self.utils.log(string, 2)
410404

@@ -437,5 +431,5 @@ def _getLeaderboardChange(self, message):
437431
return i
438432

439433

440-
def setup(bot):
441-
bot.add_cog(Commandlistener(bot))
434+
async def setup(bot):
435+
await bot.add_cog(Commandlistener(bot))

cogs/commandmod.py

Lines changed: 25 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -100,28 +100,33 @@ async def addtextwhitelist(self, ctx, channelID=None):
100100
101101
Adds channel to whitelist, so users can get XP in the channel.
102102
"""
103-
guild = self.bot.get_guild(self.jh.getFromConfig("guild"))
103+
guild = self.bot.get_guild(int(self.jh.getFromConfig("guild")))
104+
# This does not include threads
104105
channels = self.bot.guilds[0].text_channels
105106
# When channelID is not given, use ctx.channel.id.
106107
if not channelID:
107108
channelID = ctx.channel.id
108-
# Test if channel is in Server
109-
if str(channelID) in [str(channel.id) for channel in channels]:
110-
# Try to write in whitelist
111-
if self.jh.writeToWhitelist(channelID):
112-
channelName = str(self.bot.get_channel(int(channelID)))
113-
message = (
114-
"Added "
115-
+ str(channelName)
116-
+ " with ID "
117-
+ str(channelID)
118-
+ " to whitelist. This Text channel will be logged."
119-
)
120-
else:
121-
message = "Channel is already in whitelist."
109+
channel_to_add = ctx.channel
122110
else:
123-
message = f"Channel is not in the server {str(guild)}"
111+
channel_to_add = self.bot.get_channel(int(channelID))
112+
113+
if not str(channelID) in [str(channel.id) for channel in channels]:
114+
# Test if channel is in Server
115+
message = f"Channel is not in the server {guild.name}"
124116
await self.utils.log(f"{message} from user {ctx.author}", 2)
117+
118+
elif self.jh.writeToWhitelist(channelID):
119+
# Try to write in whitelist
120+
channelName = channel_to_add.name
121+
message = (
122+
"Added "
123+
+ str(channelName)
124+
+ " with ID "
125+
+ str(channelID)
126+
+ " to whitelist. This Text channel will be logged."
127+
)
128+
else:
129+
message = "Channel is already in whitelist."
125130
await ctx.send(message)
126131

127132
@textwl.command(name="rm", brief="Removes a text channel from the whitelist")
@@ -224,7 +229,7 @@ async def addblacklist(self, ctx, channelID):
224229
225230
Adds channel to whitelist, so users can not get XP in the channel.
226231
"""
227-
guild = self.bot.get_guild(self.jh.getFromConfig("guild"))
232+
guild = self.bot.get_guild(int(self.jh.getFromConfig("guild")))
228233
channels = self.bot.guilds[0].voice_channels
229234
# Test if channel is in Server
230235
if str(channelID) in [str(channel.id) for channel in channels]:
@@ -241,7 +246,7 @@ async def addblacklist(self, ctx, channelID):
241246
else:
242247
message = "Channel is already in blacklist."
243248
else:
244-
message = f"Channel is not in the server {str(guild)}"
249+
message = f"Channel is not in the server {guild.name}"
245250
await self.utils.log(f"{message} from user {ctx.author}", 2)
246251
await ctx.send(message)
247252

@@ -342,5 +347,5 @@ async def printData(self, ctx):
342347
await ctx.send(f"```{message}```")
343348

344349

345-
def setup(bot):
346-
bot.add_cog(Commandmod(bot))
350+
async def setup(bot):
351+
await bot.add_cog(Commandmod(bot))

cogs/commandmodserver.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,5 +46,5 @@ def __init__(self, bot):
4646
Commandmodserver.utils = self.utils
4747

4848

49-
def setup(bot):
50-
bot.add_cog(Commandmodserver(bot))
49+
async def setup(bot):
50+
await bot.add_cog(Commandmodserver(bot))

cogs/commandowner.py

Lines changed: 9 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import os
22

3-
from discord import InvalidArgument
3+
from discord import NotFound
44
from discord.ext import commands
55

66
from helpfunctions.decorators import isBotOwnerCommand
@@ -87,9 +87,7 @@ async def stoplog(self, ctx):
8787
guildName = str(self.bot.get_guild(guildID))
8888
self.jh.config["log"] = "False"
8989
self.jh.saveConfig()
90-
await self.utils.log(
91-
f"Stopped to log users from Server:\n\t{guildName}", 2
92-
)
90+
await self.utils.log(f"Stopped to log users from Server:\n\t{guildName}", 2)
9391
else:
9492
await ctx.send("Bot is NOT logging. Logging state: False")
9593

@@ -139,7 +137,7 @@ async def addReaction(self, ctx, channelID, messageID, emoji):
139137
return
140138
try:
141139
await message.add_reaction(emoji)
142-
except InvalidArgument:
140+
except NotFound:
143141
await ctx.send("No vaild emoji was sent by user.")
144142

145143
@commands.command(name="rlext")
@@ -161,19 +159,17 @@ async def reloadExtensions(self, ctx, *extensions):
161159
[
162160
"cogs." + ext[:-3]
163161
for ext in os.listdir("./")
164-
if ext.endswith(".py")
162+
if ext.endswith(".py") and not ext.startswith("__")
165163
]
166164
)
167165
reloadedExtensions = []
168166
for ext in extensions:
169167
if ext in self.bot.extensions:
170-
self.bot.unload_extension(ext)
171-
self.bot.load_extension(ext)
168+
await self.bot.unload_extension(ext)
169+
await self.bot.load_extension(ext)
172170
reloadedExtensions.append(ext)
173-
await self.utils.log(
174-
f"Reloaded extensions: {', '.join(reloadedExtensions)}", 2
175-
)
171+
await self.utils.log(f"Reloaded extensions: {', '.join(reloadedExtensions)}", 2)
176172

177173

178-
def setup(bot):
179-
bot.add_cog(Commandowner(bot))
174+
async def setup(bot):
175+
await bot.add_cog(Commandowner(bot))

cogs/commandpoll.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -635,5 +635,5 @@ def votedOption(self, message):
635635
return i
636636

637637

638-
def setup(bot):
639-
bot.add_cog(Commandpoll(bot))
638+
async def setup(bot):
639+
await bot.add_cog(Commandpoll(bot))

cogs/commandsubroutine.py

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -133,9 +133,7 @@ async def removeRoleSubroutineFunction(self, currentTime, bufferTime, guild):
133133
log_message,
134134
2,
135135
)
136-
if (
137-
currentTime - offset
138-
) % interval < bufferTime and currentTime > offset:
136+
if (currentTime - offset) % interval < bufferTime and currentTime > offset:
139137
role = guild.get_role(int(toRemove))
140138
if role is None:
141139
log_message = (
@@ -236,8 +234,7 @@ def addMembersOnlineVoiceXp(self, serverid):
236234
# Total all connected members
237235
for channel in voiceChanels:
238236
membersInChannel = [
239-
member for member in channel.members if not member.bot
240-
]
237+
member for member in channel.members if not member.bot]
241238
# Check if more than one person is in channel
242239
if len(membersInChannel) >= 2:
243240
membersNotMutedOrBot = [
@@ -246,8 +243,7 @@ def addMembersOnlineVoiceXp(self, serverid):
246243
if not (member.voice.self_mute or member.bot)
247244
]
248245
self.jh.addAllUserVoice(
249-
[member.id for member in membersNotMutedOrBot]
250-
)
246+
[member.id for member in membersNotMutedOrBot])
251247
# Extra XP
252248
membersStreamOrVideo = [
253249
member
@@ -281,5 +277,5 @@ async def levelAkk(self):
281277
)
282278

283279

284-
def setup(bot):
285-
bot.add_cog(Subroutine(bot))
280+
async def setup(bot):
281+
await bot.add_cog(Subroutine(bot))

cogs/commandsubserver.py

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -658,8 +658,7 @@ def get_all_subserver_roles(self):
658658
# Sort by subserver name. '+ r.name[1]' is for sorting sub roles on top of
659659
# subway roles, since '+ r.name[1]' is 'u' or 'w'.
660660
sorted_roles = sorted(
661-
sub_roles, key=lambda r: r.name.split("-")[1] + r.name[1]
662-
)
661+
sub_roles, key=lambda r: r.name.split("-")[1] + r.name[1])
663662
if not sorted_roles:
664663
return []
665664
# Data pattern: [(sub-a, sw-a), ...]
@@ -809,5 +808,5 @@ def hash_invite_code(self, subserver_name):
809808
return code[:8]
810809

811810

812-
def setup(bot):
813-
bot.add_cog(Commandsubserver(bot))
811+
async def setup(bot):
812+
await bot.add_cog(Commandsubserver(bot))

cogs/commanduser.py

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -502,9 +502,7 @@ async def textunban(self, ctx, userID):
502502
f"User {ctx.author.mention} textunbaned {user.mention}"
503503
)
504504
else:
505-
await ctx.send(
506-
content="ERROR: User has no textban.", delete_after=3600
507-
)
505+
await ctx.send(content="ERROR: User has no textban.", delete_after=3600)
508506

509507
"""
510508
# When give star of the week should be queued
@@ -647,7 +645,7 @@ async def getLevel(self, ctx, *inputs):
647645
return
648646
self.jh.addNewDataEntry(userID)
649647
# Create Embeded
650-
avatar_url = member.avatar_url
648+
avatar_url = member.avatar
651649
level = self.jh.getUserLevel(userID)
652650
voiceXP = self.jh.getUserVoice(userID)
653651
textXP = self.jh.getUserText(userID)
@@ -752,5 +750,5 @@ async def reclaimData(self, ctx, voice, text, textCount, code, hash):
752750
"""
753751

754752

755-
def setup(bot):
756-
bot.add_cog(Commanduser(bot))
753+
async def setup(bot):
754+
await bot.add_cog(Commanduser(bot))

0 commit comments

Comments
 (0)