Added Discord nickname syncing with EVE alliance character name (#525)

This commit is contained in:
moriartyj
2016-09-03 20:13:54 -07:00
committed by Adarnof
parent c382b0fd1f
commit 812268211c
4 changed files with 44 additions and 1 deletions

View File

@@ -452,7 +452,7 @@ AUTH_URL = "https://discordapp.com/api/oauth2/authorize"
TOKEN_URL = "https://discordapp.com/api/oauth2/token"
# kick, manage roles
BOT_PERMISSIONS = 0x00000002 + 0x10000000
BOT_PERMISSIONS = 0x00000002 + 0x10000000 + 0x08000000
# get user ID, accept invite
SCOPES = [
@@ -503,6 +503,23 @@ class DiscordOAuthManager:
logger.exception("Failed to add Discord user")
return None
@staticmethod
def update_nickname(user_id, nickname):
try:
custom_headers = {'content-type':'application/json', 'authorization': 'Bot ' + settings.DISCORD_BOT_TOKEN}
data = { 'nick': nickname, }
path = DISCORD_URL + "/guilds/" + str(settings.DISCORD_GUILD_ID) + "/members/" + str(user_id)
r = requests.patch(path, headers=custom_headers, json=data)
logger.debug("Got status code %s after setting nickname for Discord user ID %s (%s)" % (r.status_code, user_id, nickname))
if r.status_code == 404:
logger.warn("Discord user ID %s could not be found in server." % user_id)
return True
r.raise_for_status()
return True
except:
logger.exception("Failed to set nickname for Discord user ID %s (%s)" % (user_id, nickname))
return False
@staticmethod
def delete_user(user_id):
try:

View File

@@ -5,6 +5,7 @@ from django.contrib.auth.decorators import login_required
from django.contrib.auth.decorators import permission_required
from django.contrib.auth.decorators import user_passes_test
from django.contrib.auth.models import Group
from django.conf import settings
from eveonline.models import EveCharacter
from eveonline.models import EveAllianceInfo
@@ -30,6 +31,7 @@ from celerytask.tasks import update_ipboard_groups
from celerytask.tasks import update_smf_groups
from celerytask.tasks import update_teamspeak3_groups
from celerytask.tasks import update_discord_groups
from celerytask.tasks import update_discord_nickname
from celerytask.tasks import update_discourse_groups
from forms import JabberBroadcastForm
from forms import FleetFormatterForm
@@ -557,6 +559,8 @@ def discord_callback(request):
user_id = DiscordOAuthManager.add_user(code)
if user_id:
AuthServicesInfoManager.update_user_discord_info(user_id, request.user)
if (settings.DISCORD_SYNC_NAMES):
update_discord_nickname.delay(request.user.pk)
update_discord_groups.delay(request.user.pk)
logger.info("Succesfully activated Discord for user %s" % request.user)
else: