Fully implemented /tcard command.
Bug fixes for member signup Added live update of game header message during pitches Documentation updates
This commit is contained in:
		@@ -66,13 +66,14 @@ class PitchListener(commands.Cog, name='Pitch Listener'):
 | 
			
		||||
				if set([x.id for x in ctx.author.roles]) & set(pitches[guildStr][timeslot]['roles'].values()):
 | 
			
		||||
					for r in list(set([x.id for x in ctx.author.roles]) & set(pitches[guildStr][timeslot]['roles'].values())):
 | 
			
		||||
						role = ctx.guild.get_role(r)
 | 
			
		||||
						rStr = str(role.id)
 | 
			
		||||
						if role.id != pitches[guildStr][timeslot]['roles'][index]:
 | 
			
		||||
							await ctx.author.remove_roles(role,reason=f'/pitch interaction by {ctx.author.display_name}')
 | 
			
		||||
							i = pitches[guildStr][timeslot]['indices'][role.id]
 | 
			
		||||
							element = pitches[guildStr][timeslot]['entries'][i]
 | 
			
		||||
							gm = await self.client.fetch_user(element['gm'])
 | 
			
		||||
							if ctx.author.id != lookup[guildStr][str(role.id)]['gm']:
 | 
			
		||||
								data[guildStr][timeslot][str(role.id)]['current_players'] -= 1
 | 
			
		||||
							if ctx.author.id != lookup[guildStr][rStr]['gm']:
 | 
			
		||||
								data[guildStr][timeslot][rStr]['current_players'] -= 1
 | 
			
		||||
								element['current_players'] -= 1
 | 
			
		||||
							o = f'_ _\n***{element["game_title"]}*** (GM: {gm.mention})\n```\n'
 | 
			
		||||
							if element['system'] is not None: o = ''.join([o,f'System: {element["system"]}\n'])
 | 
			
		||||
@@ -84,9 +85,9 @@ class PitchListener(commands.Cog, name='Pitch Listener'):
 | 
			
		||||
							o = ''.join([o,f'~~Spaces Remaining: {str(0)}~~'])if spaces_remaining <= 0 else ''.join([o,f'Spaces Remaining: {str(spaces_remaining)}'])
 | 
			
		||||
							m = await ctx.channel.fetch_message(pitches[guildStr][timeslot]['messages'][i])
 | 
			
		||||
							await m.edit(content=o)
 | 
			
		||||
							tc = discord.utils.find(lambda x: x.id == lookup[guildStr][str(role.id)]['text_channel'],ctx.guild.text_channels)
 | 
			
		||||
							tc = discord.utils.find(lambda x: x.id == lookup[guildStr][rStr]['text_channel'],ctx.guild.text_channels)
 | 
			
		||||
							if tc is None:
 | 
			
		||||
								c = discord.utils.find(lambda x: x.id == lookup[guildStr][str(role.id)]['category'],ctx.guild.categories)
 | 
			
		||||
								c = discord.utils.find(lambda x: x.id == lookup[guildStr][rStr]['category'],ctx.guild.categories)
 | 
			
		||||
								if c is not None:
 | 
			
		||||
									tPos = len(ctx.guild.channels)
 | 
			
		||||
									for t in c.text_channels:
 | 
			
		||||
@@ -96,13 +97,15 @@ class PitchListener(commands.Cog, name='Pitch Listener'):
 | 
			
		||||
							if tc is not None:
 | 
			
		||||
								await tc.send(f'```{ctx.author.display_name} has left the game.```')
 | 
			
		||||
				role = ctx.guild.get_role(pitches[guildStr][timeslot]['roles'][index])
 | 
			
		||||
				rStr = str(role.id)
 | 
			
		||||
				if role in ctx.author.roles:
 | 
			
		||||
					await ctx.send(f'```Error: You are already in the game `{lookup[guildStr][str(role.id)]["game_title"]}`.```', hidden=True)
 | 
			
		||||
					await ctx.send(f'```Error: You are already in the game `{lookup[guildStr][rStr]["game_title"]}`.```', hidden=True)
 | 
			
		||||
				else:
 | 
			
		||||
					await ctx.author.add_roles(role,reason=f'/pitch interaction by {ctx.author.display_name}')
 | 
			
		||||
					element = pitches[guildStr][timeslot]['entries'][index]
 | 
			
		||||
					data[guildStr][timeslot][str(role.id)]['current_players'] += 1
 | 
			
		||||
					element['current_players'] += 1
 | 
			
		||||
					if ctx.author.id != lookup[guildStr][rStr]['gm']:
 | 
			
		||||
						data[guildStr][timeslot][rStr]['current_players'] += 1
 | 
			
		||||
						element['current_players'] += 1
 | 
			
		||||
					gm = await self.client.fetch_user(element['gm'])
 | 
			
		||||
					o = f'_ _\n***{element["game_title"]}*** (GM: {gm.mention})\n```\n'
 | 
			
		||||
					if element['system'] is not None: o = ''.join([o,f'System: {element["system"]}\n'])
 | 
			
		||||
@@ -114,10 +117,10 @@ class PitchListener(commands.Cog, name='Pitch Listener'):
 | 
			
		||||
					o = ''.join([o,f'~~Spaces Remaining: {str(0)}~~'])if spaces_remaining <= 0 else ''.join([o,f'Spaces Remaining: {str(spaces_remaining)}'])
 | 
			
		||||
					m = await ctx.channel.fetch_message(pitches[guildStr][timeslot]['messages'][index])
 | 
			
		||||
					await m.edit(content=o)
 | 
			
		||||
					await ctx.send(f'You have joined the game `{lookup[guildStr][str(role.id)]["game_title"]}`.',hidden=True)
 | 
			
		||||
					tc = discord.utils.find(lambda x: x.id == lookup[guildStr][str(role.id)]['text_channel'],ctx.guild.text_channels)
 | 
			
		||||
					await ctx.send(f'You have joined the game `{lookup[guildStr][rStr]["game_title"]}`.',hidden=True)
 | 
			
		||||
					tc = discord.utils.find(lambda x: x.id == lookup[guildStr][rStr]['text_channel'],ctx.guild.text_channels)
 | 
			
		||||
					if tc is None:
 | 
			
		||||
						c = discord.utils.find(lambda x: x.id == lookup[guildStr][str(role.id)]['category'],ctx.guild.categories)
 | 
			
		||||
						c = discord.utils.find(lambda x: x.id == lookup[guildStr][rStr]['category'],ctx.guild.categories)
 | 
			
		||||
						if c is not None:
 | 
			
		||||
							tPos = len(ctx.guild.channels)
 | 
			
		||||
							for t in c.text_channels:
 | 
			
		||||
@@ -126,15 +129,27 @@ class PitchListener(commands.Cog, name='Pitch Listener'):
 | 
			
		||||
									tPos = t.position
 | 
			
		||||
					if tc is not None:
 | 
			
		||||
						await tc.send(f'```{ctx.author.display_name} has joined the game.```')
 | 
			
		||||
						ts = lookup[guildStr][rStr]['time']
 | 
			
		||||
						p = await tc.pins()
 | 
			
		||||
						if p is not None:
 | 
			
		||||
							header = discord.utils.find(lambda x: x.id == data[guildStr][ts][rStr]['header_message'], p)
 | 
			
		||||
							if header is not None:
 | 
			
		||||
								text = header.content.split('\n')
 | 
			
		||||
								for line, item in enumerate(text):
 | 
			
		||||
									if 'Current Players: ' in item:
 | 
			
		||||
										text[line] = f'Current Players: {str(data[guildStr][ts][rStr]["current_players"]) if data[guildStr][ts][rStr]["current_players"] is not None else str(0)}'
 | 
			
		||||
										break
 | 
			
		||||
								await header.edit(content='\n'.join(text))
 | 
			
		||||
			elif ctx.custom_id.startswith('leave_'):
 | 
			
		||||
				role = ctx.guild.get_role(pitches[guildStr][timeslot]['roles'][index])
 | 
			
		||||
				rStr = str(role.id)
 | 
			
		||||
				if role not in ctx.author.roles:
 | 
			
		||||
					await ctx.send(f'```Error: You are not in the game `{lookup[guildStr][str(role.id)]["game_title"]}`.```', hidden=True)
 | 
			
		||||
					await ctx.send(f'```Error: You are not in the game `{lookup[guildStr][rStr]["game_title"]}`.```', hidden=True)
 | 
			
		||||
				else:
 | 
			
		||||
					await ctx.author.remove_roles(role,reason=f'/pitch interaction by {ctx.author.display_name}')
 | 
			
		||||
					element = pitches[guildStr][timeslot]['entries'][index]
 | 
			
		||||
					if ctx.author.id != lookup[guildStr][str(role.id)]['gm']:
 | 
			
		||||
						data[guildStr][timeslot][str(role.id)]['current_players'] -= 1
 | 
			
		||||
					if ctx.author.id != lookup[guildStr][rStr]['gm']:
 | 
			
		||||
						data[guildStr][timeslot][rStr]['current_players'] -= 1
 | 
			
		||||
						element['current_players'] -= 1
 | 
			
		||||
					gm = await self.client.fetch_user(element['gm'])
 | 
			
		||||
					o = f'_ _\n***{element["game_title"]}*** (GM: {gm.mention})\n```\n'
 | 
			
		||||
@@ -147,10 +162,10 @@ class PitchListener(commands.Cog, name='Pitch Listener'):
 | 
			
		||||
					o = ''.join([o,f'~~Spaces Remaining: {str(0)}~~'])if spaces_remaining <= 0 else ''.join([o,f'Spaces Remaining: {str(spaces_remaining)}'])
 | 
			
		||||
					me = await ctx.channel.fetch_message(pitches[guildStr][timeslot]['messages'][index])
 | 
			
		||||
					await me.edit(content=o)
 | 
			
		||||
					await ctx.send(f'You have left the game `{lookup[guildStr][str(role.id)]["game_title"]}`.',hidden=True)
 | 
			
		||||
					tc = discord.utils.find(lambda x: x.id == lookup[guildStr][str(role.id)]['text_channel'],ctx.guild.text_channels)
 | 
			
		||||
					await ctx.send(f'You have left the game `{lookup[guildStr][rStr]["game_title"]}`.',hidden=True)
 | 
			
		||||
					tc = discord.utils.find(lambda x: x.id == lookup[guildStr][rStr]['text_channel'],ctx.guild.text_channels)
 | 
			
		||||
					if tc is None:
 | 
			
		||||
						c = discord.utils.find(lambda x: x.id == lookup[guildStr][str(role.id)]['category'],ctx.guild.categories)
 | 
			
		||||
						c = discord.utils.find(lambda x: x.id == lookup[guildStr][rStr]['category'],ctx.guild.categories)
 | 
			
		||||
						if c is not None:
 | 
			
		||||
							tPos = len(ctx.guild.channels)
 | 
			
		||||
							for t in c.text_channels:
 | 
			
		||||
@@ -159,6 +174,17 @@ class PitchListener(commands.Cog, name='Pitch Listener'):
 | 
			
		||||
									tPos = t.position
 | 
			
		||||
					if tc is not None:
 | 
			
		||||
						await tc.send(f'```{ctx.author.display_name} has left the game.```')
 | 
			
		||||
						ts = lookup[guildStr][rStr]['time']
 | 
			
		||||
						p = await tc.pins()
 | 
			
		||||
						if p is not None:
 | 
			
		||||
							header = discord.utils.find(lambda x: x.id == data[guildStr][ts][rStr]['header_message'], p)
 | 
			
		||||
							if header is not None:
 | 
			
		||||
								text = header.content.split('\n')
 | 
			
		||||
								for line, item in enumerate(text):
 | 
			
		||||
									if 'Current Players: ' in item:
 | 
			
		||||
										text[line] = f'Current Players: {str(data[guildStr][ts][rStr]["current_players"]) if data[guildStr][ts][rStr]["current_players"] is not None else str(0)}'
 | 
			
		||||
										break
 | 
			
		||||
								await header.edit(content='\n'.join(text))
 | 
			
		||||
		yaml_dump(data, dataFile)
 | 
			
		||||
		yaml_dump(pitches, pitchesFile)
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user