| 
						
						
							
								
							
						
						
					 | 
				
			
			 | 
			 | 
			
				@ -2,7 +2,6 @@ package modules
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				import (
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					"fmt"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					"strings"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					"github.com/bwmarrin/discordgo"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
			
			 | 
			 | 
			
				@ -17,120 +16,110 @@ type invite struct {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					Reason string
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				func createInvite(s *discordgo.Session, m *discordgo.MessageCreate, command []string) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					if !enforceDM(s, m) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						return
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					if !membersOnly(s, m) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						return
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					if len(command) < 2 {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						s.ChannelMessageSend(m.ChannelID, "指令的使用方法是`!invite <你所要设置的验证码>`.\nUsage: `!invite <validation code>`")
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						return
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					if len(command) > 2 {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						s.ChannelMessageSend(m.ChannelID, "所提供的验证码不得有任何空格。\nThe provided validation code cannot contain any spaces.")
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						return
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				var createInvite = enforceDM(memberFilter(true,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					func(s *discordgo.Session, m *discordgo.MessageCreate, command []string) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						if len(command) < 2 {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							s.ChannelMessageSend(m.ChannelID, "指令的使用方法是`!invite <你所要设置的验证码>`.\nUsage: `!invite <validation code>`")
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							return
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						if len(command) > 2 {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							s.ChannelMessageSend(m.ChannelID, "所提供的验证码不得有任何空格。\nThe provided validation code cannot contain any spaces.")
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							return
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					err := db.SetInviteOwner(command[1], m.Author.ID)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					switch err {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					case db.ErrAlreadyExists:
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						owner, _ := db.GetInviteOwner(command[1])
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						if owner == m.Author.ID {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						err := db.SetInviteOwner(command[1], m.Author.ID)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						switch err {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						case db.ErrAlreadyExists:
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							owner, _ := db.GetInviteOwner(command[1])
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							if owner == m.Author.ID {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								s.ChannelMessageSend(
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
									m.ChannelID,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
									"这个验证码归你所有,它仍然未被使用。请把它告诉你要邀请的人。\nThis validation code belongs to you. Please give it to the person you want to invite.",
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								return
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							s.ChannelMessageSend(
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								m.ChannelID,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								"这个验证码已被其他会员注册。请使用别的验证码。\nThis validation code is already registered. Please try another one.",
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						case db.ErrInviteUsed:
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							s.ChannelMessageSend(
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								m.ChannelID,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								"这个验证码已被使用。请使用别的验证码。\nThis validation code has already been used. Please try another one.",
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						case nil:
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							s.ChannelMessageSend(
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								m.ChannelID,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								"这个验证码归你所有,它仍然未被使用。请把它告诉你要邀请的人。\nThis validation code belongs to you. Please give it to the person you want to invite.",
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								"这个验证码现在属于你了。请好好保管并把它交给你要邀请的人。\nThis validation code now belongs to you! Pass it on to the person you want to invite.",
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						default:
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							s.ChannelMessageSend(
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								m.ChannelID,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								"不明错误已发生,请把这个错误信息发在群里。\nAn unknown error has occurred. Please pass this error message on.\n"+err.Error(),
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					},
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				))
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				var checkUseInvite = enforceDM(memberFilter(false, enforceArgumentCount(
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					config.ValidateUsage, 3,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					func(s *discordgo.Session, m *discordgo.MessageCreate, command []string) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						inviter, err := db.GetInviteOwner(command[1])
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						if err == db.ErrInviteUsed {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							initNewEmbed(config.ErrorValidateTitle, config.ErrorValidationCodeReuse, config.ErrorColour).
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								Send(s, m.ChannelID)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							return
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						if err == db.ErrNotFound {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							initNewEmbed(config.ErrorValidateTitle, config.ErrorValidationCodeNotExist, config.ErrorColour).
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								SendPM(s, m.ChannelID)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							return
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						if err != nil {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							auditError(s, m.ChannelID, err)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							return
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						s.ChannelMessageSend(
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							m.ChannelID,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							"这个验证码已被其他会员注册。请使用别的验证码。\nThis validation code is already registered. Please try another one.",
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					case db.ErrInviteUsed:
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						s.ChannelMessageSend(
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							m.ChannelID,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							"这个验证码已被使用。请使用别的验证码。\nThis validation code has already been used. Please try another one.",
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					case nil:
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						s.ChannelMessageSend(
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							m.ChannelID,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							"这个验证码现在属于你了。请好好保管并把它交给你要邀请的人。\nThis validation code now belongs to you! Pass it on to the person you want to invite.",
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					default:
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						s.ChannelMessageSend(
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							m.ChannelID,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							"不明错误已发生,请把这个错误信息发在群里。\nAn unknown error has occurred. Please pass this error message on.\n"+err.Error(),
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				func checkUseInvite(s *discordgo.Session, m *discordgo.MessageCreate, command []string) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					if !enforceDM(s, m) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						return
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					if !nonMembersOnly(s, m) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						return
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					s.ChannelMessageDelete(m.ChannelID, m.ID)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					if len(command) < 3 {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						sendPrivateMessage(s, m.Author.ID, "指令的使用方法是`!validate <验证码> <原因>`.\nUsage: `!validate <validation code> <reason>`")
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						return
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					messageSplit := strings.SplitN(m.Content, " ", 3)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					inviter, err := db.GetInviteOwner(messageSplit[1])
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					if err == db.ErrInviteUsed {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						sendPrivateMessage(s, m.Author.ID, "该验证码已被使用过。请向验证码制造者要求新的验证码。\nThis validation code has been used before. Please request a new one.")
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						return
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					if err == db.ErrNotFound {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						sendPrivateMessage(s, m.Author.ID, "该验证码不存在。请使用存在的验证码。\nThis validation code doesn't exist. Please use an existing one.")
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						return
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					if err != nil {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						sendPrivateMessage(s, m.Author.ID, "错误已发生。请稍候尝试。\nAn error has occurred. Please try again later.")
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						auditLog(s, err.Error())
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						return
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					db.UseInvite(messageSplit[1])
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					member, err := s.GuildMember(config.GuildID, inviter)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					if err != nil {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						sendPrivateMessage(s, m.Author.ID, "验证码制造者不是会员。\nValidation code creator is no longer a member.")
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						return
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						db.UseInvite(command[1])
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						member, err := s.GuildMember(config.GuildID, inviter)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						if err != nil {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							auditErrorPM(s, m.ChannelID, err)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							return
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					isMember := false
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					for _, v := range member.Roles {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						if v == config.MemberRoleID {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							isMember = true
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						isMember := false
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						for _, v := range member.Roles {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							if v == config.MemberRoleID {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								isMember = true
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						if !isMember {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							initNewEmbed(config.ErrorValidateTitle, config.ErrorValidationCodeNotOwnedByMember, config.ErrorColour).
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								SendPM(s, m.ChannelID)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							return
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					if !isMember {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						sendPrivateMessage(s, m.Author.ID, "验证码制造者不是会员。\nValidation code creator is no longer a member.")
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						return
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					channel, err := s.UserChannelCreate(inviter)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					if err != nil {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						sendPrivateMessage(s, m.Author.ID, "验证码制造者关闭了私信。\nValidation code creator did not enable DMs.")
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						return
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					msg, err := s.ChannelMessageSend(channel.ID, fmt.Sprintf("<@%s>正在尝试使用验证码%s。请问是否同意该使用?", m.Author.ID, messageSplit[1]))
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					if err != nil {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						sendPrivateMessage(s, m.Author.ID, "验证码制造者关闭了私信。\nValidation code creator did not enable DMs.")
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						return
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					pendingInviteConfirmation[msg.ID] = invite{
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						User:   m.Author.ID,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						Reason: messageSplit[2],
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					s.MessageReactionAdd(channel.ID, msg.ID, emojiX)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					s.MessageReactionAdd(channel.ID, msg.ID, emojiCheck)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					sendPrivateMessage(s, m.Author.ID, "已向验证码制造者发送了请求。\nSent a request to use the validation code to its creator.")
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						channel, err := s.UserChannelCreate(inviter)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						if err != nil {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							initNewEmbed(config.ErrorValidateTitle, config.ErrorValidationCodeCreatorDisabledPM, config.ErrorColour).
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
								SendPM(s, m.ChannelID)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							return
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						msg, err := s.ChannelMessageSend(channel.ID, fmt.Sprintf("<@%s>正在尝试使用验证码%s。请问是否同意该使用?", m.Author.ID, command[1]))
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						if err != nil {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							auditErrorPM(s, m.ChannelID, err)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							return
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						pendingInviteConfirmation[msg.ID] = invite{
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							User:   m.Author.ID,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							Reason: command[2],
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						s.MessageReactionAdd(channel.ID, msg.ID, emojiX)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						s.MessageReactionAdd(channel.ID, msg.ID, emojiCheck)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						initNewEmbed(config.SuccessTitle, config.ValidateSuccess, config.SuccessColour).
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							SendPM(s, m.ChannelID)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					},
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				)))
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				func CheckForInvite(s *discordgo.Session, r *discordgo.MessageReactionAdd) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					if r.UserID == s.State.User.ID {
 | 
			
		
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
			
			 | 
			 | 
			
				@ -156,21 +145,15 @@ func CheckForInvite(s *discordgo.Session, r *discordgo.MessageReactionAdd) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					msg, err := s.ChannelMessageSend(config.VoteChannel, "正在准备新的一个投票…… Preparing for the next vote...")
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					if err != nil {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						sendPrivateMessage(s, r.UserID, "创造投票失败。Failed to create vote.")
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						auditLog(s,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							fmt.Sprintf("Error occurred while creating vote for <@%s>.\n%v\nError: %s", r.UserID, *r, err.Error()),
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						auditErrorPM(s, r.UserID, err)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						return
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					id, err := db.CreateInviteVote(msg.ID, invite.User, invite.Reason)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					if err != nil {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						sendPrivateMessage(s, r.UserID, "创造投票失败。Failed to create vote.")
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						auditLog(s,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							fmt.Sprintf("Error occurred while creating vote for <@%s>.\n%v\nError: %s", r.UserID, *r, err.Error()),
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						auditErrorPM(s, r.UserID, err)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						return
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					auditLog(s, fmt.Sprintf("Vote ID %d has been created by <@%s>.", id, r.UserID))
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					auditInfo(s, fmt.Sprintf("Vote ID %d has been created by <@%s>.", id, r.UserID))
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					s.ChannelMessageEdit(config.VoteChannel, msg.ID, "")
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					s.ChannelMessageEditEmbed(config.VoteChannel, msg.ID, createInviteEmbed(id, invite.User+":"+invite.Reason))
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					s.MessageReactionAdd(config.VoteChannel, msg.ID, emojiX)
 | 
			
		
		
	
	
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
				
			
			 | 
			 | 
			
				
 
 |