Add endpoint for discord invite
This commit is contained in:
parent
83464d280d
commit
16f48e0140
@ -1,8 +1,12 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
using System.Net.Http;
|
using System.Net.Http;
|
||||||
using System.Net.Http.Headers;
|
using System.Net.Http.Headers;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
using ChaosBot.Discord;
|
||||||
|
using ChaosBot.Repositories;
|
||||||
|
using Discord;
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
using Microsoft.Extensions.Configuration;
|
using Microsoft.Extensions.Configuration;
|
||||||
using Newtonsoft.Json;
|
using Newtonsoft.Json;
|
||||||
@ -49,6 +53,25 @@ namespace ChaosBot.WebServer.App
|
|||||||
return LocalRedirect($"/#/?access_token={responseObject.access_token}");
|
return LocalRedirect($"/#/?access_token={responseObject.access_token}");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[HttpGet("invite")]
|
||||||
|
public IActionResult Invite()
|
||||||
|
{
|
||||||
|
string clientId = Program.AppSettingsHandler.GetValue<string>("Discord:ClientId");
|
||||||
|
const ulong permissions =
|
||||||
|
0x00000020 + // MANAGE_CHANNELS
|
||||||
|
0x04000000 + // CHANGE_NICKNAME
|
||||||
|
0x00010000 + // READ_MESSAGE_HISTORY
|
||||||
|
0x00000800 + // SEND_MESSAGES
|
||||||
|
0x00002000 + // MANAGE_MESSAGES
|
||||||
|
0x00008000 + // ATTACH_FILES
|
||||||
|
0x00040000 + // USE_EXTERNAL_EMOJIS
|
||||||
|
0x00000040 + // ADD_REACTIONS
|
||||||
|
0x00000400 // VIEW_CHANNEL
|
||||||
|
;
|
||||||
|
|
||||||
|
return Redirect($"https://discord.com/oauth2/authorize?client_id={clientId}&scope=bot&permissions={permissions}");
|
||||||
|
}
|
||||||
|
|
||||||
[HttpGet("user")]
|
[HttpGet("user")]
|
||||||
public IActionResult GetUser()
|
public IActionResult GetUser()
|
||||||
{
|
{
|
||||||
@ -77,7 +100,13 @@ namespace ChaosBot.WebServer.App
|
|||||||
string responseString = response.Content.ReadAsStringAsync().GetAwaiter().GetResult();
|
string responseString = response.Content.ReadAsStringAsync().GetAwaiter().GetResult();
|
||||||
List<DiscordGuildResponse> userResponse = JsonConvert.DeserializeObject<List<DiscordGuildResponse>>(responseString);
|
List<DiscordGuildResponse> userResponse = JsonConvert.DeserializeObject<List<DiscordGuildResponse>>(responseString);
|
||||||
|
|
||||||
return Json(userResponse);
|
List<ulong> presentGuilds = DiscordConnect._client.Guilds.Select(g => g.Id).ToList();
|
||||||
|
List<DiscordGuildResponseWithPresence> userResponseWithPresence =
|
||||||
|
userResponse
|
||||||
|
.Select(guild => guild.AddPresence(presentGuilds.Contains(guild.id)))
|
||||||
|
.ToList();
|
||||||
|
|
||||||
|
return Json(userResponseWithPresence);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static DiscordUserResponse GetDiscordUser(string accessToken)
|
private static DiscordUserResponse GetDiscordUser(string accessToken)
|
||||||
@ -127,11 +156,30 @@ namespace ChaosBot.WebServer.App
|
|||||||
|
|
||||||
public class DiscordGuildResponse
|
public class DiscordGuildResponse
|
||||||
{
|
{
|
||||||
public string id { get; set; }
|
public ulong id { get; set; }
|
||||||
public string name { get; set; }
|
public string name { get; set; }
|
||||||
public string icon { get; set; }
|
public string icon { get; set; }
|
||||||
public bool owner { get; set; }
|
public bool owner { get; set; }
|
||||||
public int permissions { get; set; }
|
public int permissions { get; set; }
|
||||||
public int permissions_new { get; set; }
|
public int permissions_new { get; set; }
|
||||||
|
|
||||||
|
public DiscordGuildResponseWithPresence AddPresence(bool presence)
|
||||||
|
{
|
||||||
|
return new DiscordGuildResponseWithPresence
|
||||||
|
{
|
||||||
|
id = id,
|
||||||
|
name = name,
|
||||||
|
icon = icon,
|
||||||
|
owner = owner,
|
||||||
|
permissions = permissions,
|
||||||
|
permissions_new = permissions_new,
|
||||||
|
bot_present = presence
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public class DiscordGuildResponseWithPresence : DiscordGuildResponse
|
||||||
|
{
|
||||||
|
public bool bot_present { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user