Skip to content

Commit 0ce0339

Browse files
author
Sourcery AI
committed
'Refactored by Sourcery'
1 parent c3751e2 commit 0ce0339

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

51 files changed

+728
-855
lines changed

discord/__main__.py

+15-13
Original file line numberDiff line numberDiff line change
@@ -35,14 +35,16 @@
3535

3636

3737
def show_version():
38-
entries = []
38+
entries = [
39+
'- Python v{0.major}.{0.minor}.{0.micro}-{0.releaselevel}'.format(
40+
sys.version_info
41+
)
42+
]
3943

40-
entries.append('- Python v{0.major}.{0.minor}.{0.micro}-{0.releaselevel}'.format(sys.version_info))
4144
version_info = discord.version_info
4245
entries.append('- discord.py v{0.major}.{0.minor}.{0.micro}-{0.releaselevel}'.format(version_info))
4346
if version_info.releaselevel != 'final':
44-
pkg = pkg_resources.get_distribution('discord.py')
45-
if pkg:
47+
if pkg := pkg_resources.get_distribution('discord.py'):
4648
entries.append(' - discord.py pkg_resources: v{0}'.format(pkg.version))
4749

4850
entries.append('- aiohttp v{0.__version__}'.format(aiohttp))
@@ -176,7 +178,7 @@ async def cog_after_invoke(self, ctx):
176178
}
177179

178180
# NUL (0) and 1-31 are disallowed
179-
_base_table.update((chr(i), None) for i in range(32))
181+
_base_table |= ((chr(i), None) for i in range(32))
180182

181183
translation_table = str.maketrans(_base_table)
182184

@@ -205,7 +207,7 @@ def newbot(parser, args):
205207
try:
206208
new_directory.mkdir(exist_ok=True, parents=True)
207209
except OSError as exc:
208-
parser.error('could not create our bot directory ({})'.format(exc))
210+
parser.error(f'could not create our bot directory ({exc})')
209211

210212
cogs = new_directory / 'cogs'
211213

@@ -214,27 +216,27 @@ def newbot(parser, args):
214216
init = cogs / '__init__.py'
215217
init.touch()
216218
except OSError as exc:
217-
print('warning: could not create cogs directory ({})'.format(exc))
219+
print(f'warning: could not create cogs directory ({exc})')
218220

219221
try:
220222
with open(str(new_directory / 'config.py'), 'w', encoding='utf-8') as fp:
221223
fp.write('token = "place your token here"\ncogs = []\n')
222224
except OSError as exc:
223-
parser.error('could not create config file ({})'.format(exc))
225+
parser.error(f'could not create config file ({exc})')
224226

225227
try:
226228
with open(str(new_directory / 'bot.py'), 'w', encoding='utf-8') as fp:
227229
base = 'Bot' if not args.sharded else 'AutoShardedBot'
228230
fp.write(bot_template.format(base=base, prefix=args.prefix))
229231
except OSError as exc:
230-
parser.error('could not create bot file ({})'.format(exc))
232+
parser.error(f'could not create bot file ({exc})')
231233

232234
if not args.no_git:
233235
try:
234236
with open(str(new_directory / '.gitignore'), 'w', encoding='utf-8') as fp:
235237
fp.write(gitignore_template)
236238
except OSError as exc:
237-
print('warning: could not create .gitignore file ({})'.format(exc))
239+
print(f'warning: could not create .gitignore file ({exc})')
238240

239241
print('successfully made bot at', new_directory)
240242

@@ -244,7 +246,7 @@ def newcog(parser, args):
244246
try:
245247
cog_dir.mkdir(exist_ok=True)
246248
except OSError as exc:
247-
print('warning: could not create cogs directory ({})'.format(exc))
249+
print(f'warning: could not create cogs directory ({exc})')
248250

249251
directory = cog_dir / to_path(parser, args.name)
250252
directory = directory.with_suffix('.py')
@@ -263,12 +265,12 @@ def newcog(parser, args):
263265
name = name.title()
264266

265267
if args.display_name:
266-
attrs += ', name="{}"'.format(args.display_name)
268+
attrs += f', name="{args.display_name}"'
267269
if args.hide_commands:
268270
attrs += ', command_attrs=dict(hidden=True)'
269271
fp.write(cog_template.format(name=name, extra=extra, attrs=attrs))
270272
except OSError as exc:
271-
parser.error('could not create cog file ({})'.format(exc))
273+
parser.error(f'could not create cog file ({exc})')
272274
else:
273275
print('successfully made cog at', directory)
274276

discord/abc.py

+76-71
Original file line numberDiff line numberDiff line change
@@ -124,19 +124,19 @@ def mention(self):
124124

125125
@classmethod
126126
def __subclasshook__(cls, C):
127-
if cls is User:
128-
if Snowflake.__subclasshook__(C) is NotImplemented:
129-
return NotImplemented
127+
if cls is not User:
128+
return NotImplemented
129+
if Snowflake.__subclasshook__(C) is NotImplemented:
130+
return NotImplemented
130131

131-
mro = C.__mro__
132-
for attr in ('display_name', 'mention', 'name', 'avatar', 'discriminator', 'bot'):
133-
for base in mro:
134-
if attr in base.__dict__:
135-
break
136-
else:
137-
return NotImplemented
138-
return True
139-
return NotImplemented
132+
mro = C.__mro__
133+
for attr in ('display_name', 'mention', 'name', 'avatar', 'discriminator', 'bot'):
134+
for base in mro:
135+
if attr in base.__dict__:
136+
break
137+
else:
138+
return NotImplemented
139+
return True
140140

141141
class PrivateChannel(metaclass=abc.ABCMeta):
142142
"""An ABC that details the common operations on a private Discord channel.
@@ -162,10 +162,7 @@ def __subclasshook__(cls, C):
162162
return NotImplemented
163163

164164
mro = C.__mro__
165-
for base in mro:
166-
if 'me' in base.__dict__:
167-
return True
168-
return NotImplemented
165+
return next((True for base in mro if 'me' in base.__dict__), NotImplemented)
169166
return NotImplemented
170167

171168
class _Overwrites:
@@ -298,14 +295,10 @@ async def _edit(self, options, reason):
298295
payload = {
299296
'allow': allow.value,
300297
'deny': deny.value,
301-
'id': target.id
298+
'id': target.id,
299+
'type': 'role' if isinstance(target, Role) else 'member',
302300
}
303301

304-
if isinstance(target, Role):
305-
payload['type'] = 'role'
306-
else:
307-
payload['type'] = 'member'
308-
309302
perms.append(payload)
310303
options['permission_overwrites'] = perms
311304

@@ -330,7 +323,9 @@ def _fill_overwrites(self, data):
330323
for index, overridden in enumerate(data.get('permission_overwrites', [])):
331324
overridden_type = try_enum(PermissionType, overridden.pop('type'))
332325
if not overridden_type:
333-
raise AttributeError('Type type should be 0 - member, or 1 - role not %s' % overridden_type)
326+
raise AttributeError(
327+
f'Type type should be 0 - member, or 1 - role not {overridden_type}'
328+
)
334329
overridden_id = int(overridden.pop('id'))
335330
self._overwrites.append(_Overwrites(id=overridden_id, type=overridden_type.name, **overridden))
336331

@@ -345,9 +340,7 @@ def _fill_overwrites(self, data):
345340
# swap it to be the first one.
346341
everyone_index = index
347342

348-
# do the swap
349-
tmp = self._overwrites
350-
if tmp:
343+
if tmp := self._overwrites:
351344
tmp[everyone_index], tmp[0] = tmp[0], tmp[everyone_index]
352345

353346
@property
@@ -369,7 +362,7 @@ def changed_roles(self):
369362
@property
370363
def mention(self):
371364
""":class:`str`: The string that allows you to mention the channel."""
372-
return '<#%s>' % self.id
365+
return f'<#{self.id}>'
373366

374367
@property
375368
def created_at(self):
@@ -654,15 +647,14 @@ async def set_permissions(self, target, *, overwrite=_undefined, reason=None, **
654647
raise InvalidArgument('target parameter must be either Member or Role')
655648

656649
if isinstance(overwrite, _Undefined):
657-
if len(permissions) == 0:
650+
if not permissions:
658651
raise InvalidArgument('No overwrite provided.')
659652
try:
660653
overwrite = PermissionOverwrite(**permissions)
661654
except (ValueError, TypeError):
662655
raise InvalidArgument('Invalid permissions given to keyword arguments.')
663-
else:
664-
if len(permissions) > 0:
665-
raise InvalidArgument('Cannot mix overwrite and keyword arguments.')
656+
elif permissions:
657+
raise InvalidArgument('Cannot mix overwrite and keyword arguments.')
666658

667659
# TODO: wait for event
668660

@@ -1049,14 +1041,13 @@ async def send(self, content=None, *, tts=False, embed=None, embeds=None, compon
10491041
_components.extend(ActionRow(*[obj for obj in component if isinstance(obj, (Button, SelectMenu))]).to_dict())
10501042
components = _components
10511043

1052-
if allowed_mentions is not None:
1053-
if state.allowed_mentions is not None:
1054-
allowed_mentions = state.allowed_mentions.merge(allowed_mentions).to_dict()
1055-
else:
1056-
allowed_mentions = allowed_mentions.to_dict()
1057-
else:
1044+
if allowed_mentions is None:
10581045
allowed_mentions = state.allowed_mentions and state.allowed_mentions.to_dict()
10591046

1047+
elif state.allowed_mentions is not None:
1048+
allowed_mentions = state.allowed_mentions.merge(allowed_mentions).to_dict()
1049+
else:
1050+
allowed_mentions = allowed_mentions.to_dict()
10601051
if mention_author is not None:
10611052
allowed_mentions = allowed_mentions or AllowedMentions().to_dict()
10621053
allowed_mentions['replied_user'] = bool(mention_author)
@@ -1085,22 +1076,37 @@ async def send(self, content=None, *, tts=False, embed=None, embeds=None, compon
10851076
raise InvalidArgument('file parameter must be File')
10861077

10871078
try:
1088-
if hidden is not None:
1089-
data = await state.http.send_interaction_response(use_webhook=use_webhook,
1090-
interaction_id=interaction_id,
1091-
token=interaction_token,
1092-
application_id=application_id,
1093-
deferred=deferred,
1094-
files=[file], allowed_mentions=allowed_mentions,
1095-
content=content, tts=tts, embeds=embeds,
1096-
components=components,
1097-
nonce=nonce, message_reference=reference,
1098-
flags=64 if hidden is True else None,
1099-
followup=followup)
1100-
else:
1101-
data = await state.http.send_files(channel.id, files=[file], allowed_mentions=allowed_mentions,
1102-
content=content, tts=tts, embeds=embeds, components=components,
1103-
nonce=nonce, message_reference=reference)
1079+
data = (
1080+
await state.http.send_interaction_response(
1081+
use_webhook=use_webhook,
1082+
interaction_id=interaction_id,
1083+
token=interaction_token,
1084+
application_id=application_id,
1085+
deferred=deferred,
1086+
files=[file],
1087+
allowed_mentions=allowed_mentions,
1088+
content=content,
1089+
tts=tts,
1090+
embeds=embeds,
1091+
components=components,
1092+
nonce=nonce,
1093+
message_reference=reference,
1094+
flags=64 if hidden is True else None,
1095+
followup=followup,
1096+
)
1097+
if hidden is not None
1098+
else await state.http.send_files(
1099+
channel.id,
1100+
files=[file],
1101+
allowed_mentions=allowed_mentions,
1102+
content=content,
1103+
tts=tts,
1104+
embeds=embeds,
1105+
components=components,
1106+
nonce=nonce,
1107+
message_reference=reference,
1108+
)
1109+
)
11041110
finally:
11051111
file.close()
11061112

@@ -1130,28 +1136,27 @@ async def send(self, content=None, *, tts=False, embed=None, embeds=None, compon
11301136
finally:
11311137
for f in files:
11321138
f.close()
1139+
elif hidden is not None:
1140+
data = await state.http.send_interaction_response(use_webhook=use_webhook,
1141+
interaction_id=interaction_id,
1142+
token=interaction_token,
1143+
application_id=application_id,
1144+
deferred=deferred, allowed_mentions=allowed_mentions,
1145+
content=content, tts=tts, embeds=embeds,
1146+
components=components,
1147+
nonce=nonce, message_reference=reference,
1148+
flags=64 if hidden is True else None,
1149+
followup=followup)
11331150
else:
1134-
if hidden is not None:
1135-
data = await state.http.send_interaction_response(use_webhook=use_webhook,
1136-
interaction_id=interaction_id,
1137-
token=interaction_token,
1138-
application_id=application_id,
1139-
deferred=deferred, allowed_mentions=allowed_mentions,
1140-
content=content, tts=tts, embeds=embeds,
1141-
components=components,
1142-
nonce=nonce, message_reference=reference,
1143-
flags=64 if hidden is True else None,
1144-
followup=followup)
1145-
else:
1146-
data = await state.http.send_message(channel.id, content, tts=tts, embeds=embeds, components=components,
1147-
nonce=nonce, allowed_mentions=allowed_mentions,
1148-
message_reference=reference)
1149-
if not hidden is True:
1150-
if not isinstance(data, dict) and not hidden is None:
1151+
data = await state.http.send_message(channel.id, content, tts=tts, embeds=embeds, components=components,
1152+
nonce=nonce, allowed_mentions=allowed_mentions,
1153+
message_reference=reference)
1154+
if hidden is not True:
1155+
if not isinstance(data, dict) and hidden is not None:
11511156
"""Thanks Discord that they dont return the message when we send the interaction callback"""
11521157
data = await state.http.get_original_interaction_response(application_id=application_id, interaction_token=interaction_token)
11531158
ret = state.create_message(channel=channel, data=data)
1154-
if (delete_after is not None) and (not hidden is True):
1159+
if delete_after is not None and hidden is not True:
11551160
await ret.delete(delay=delete_after)
11561161
return ret
11571162

discord/activity.py

+8-16
Original file line numberDiff line numberDiff line change
@@ -189,10 +189,7 @@ def __init__(self, **kwargs):
189189
self.session_id = kwargs.pop('session_id', None)
190190
self.type = try_enum(ActivityType, kwargs.pop('type', -1))
191191
emoji = kwargs.pop('emoji', None)
192-
if emoji is not None:
193-
self.emoji = PartialEmoji.from_dict(emoji)
194-
else:
195-
self.emoji = None
192+
self.emoji = PartialEmoji.from_dict(emoji) if emoji is not None else None
196193

197194
def __repr__(self):
198195
attrs = (
@@ -205,7 +202,7 @@ def __repr__(self):
205202
'emoji',
206203
)
207204
mapped = ' '.join('%s=%r' % (attr, getattr(self, attr)) for attr in attrs)
208-
return '<Activity %s>' % mapped
205+
return f'<Activity {mapped}>'
209206

210207
def to_dict(self):
211208
ret = {}
@@ -332,9 +329,9 @@ def _extract_timestamp(self, data, key):
332329
try:
333330
dt = data[key]
334331
except KeyError:
335-
setattr(self, '_' + key, 0)
332+
setattr(self, f'_{key}', 0)
336333
else:
337-
setattr(self, '_' + key, dt.timestamp() * 1000.0)
334+
setattr(self, f'_{key}', dt.timestamp() * 1000.0)
338335

339336
@property
340337
def type(self):
@@ -624,7 +621,7 @@ def album_cover_url(self):
624621
if large_image[:8] != 'spotify:':
625622
return ''
626623
album_image_id = large_image[8:]
627-
return 'https://i.scdn.co/image/' + album_image_id
624+
return f'https://i.scdn.co/image/{album_image_id}'
628625

629626
@property
630627
def track_id(self):
@@ -737,12 +734,9 @@ def __hash__(self):
737734
return hash((self.name, str(self.emoji)))
738735

739736
def __str__(self):
740-
if self.emoji:
741-
if self.name:
742-
return '%s %s' % (self.emoji, self.name)
743-
return str(self.emoji)
744-
else:
737+
if not self.emoji:
745738
return str(self.name)
739+
return f'{self.emoji} {self.name}' if self.name else str(self.emoji)
746740

747741
def __repr__(self):
748742
return '<CustomActivity name={0.name!r} emoji={0.emoji!r}>'.format(self)
@@ -765,9 +759,7 @@ def create_activity(data):
765759
else:
766760
return CustomActivity(name=name, **data)
767761
elif game_type is ActivityType.streaming:
768-
if 'url' in data:
769-
return Streaming(**data)
770-
return Activity(**data)
762+
return Streaming(**data) if 'url' in data else Activity(**data)
771763
elif game_type is ActivityType.listening and 'sync_id' in data and 'session_id' in data:
772764
return Spotify(**data)
773765
return Activity(**data)

0 commit comments

Comments
 (0)