Skip to content

Commit

Permalink
feat: reply
Browse files Browse the repository at this point in the history
  • Loading branch information
gx1285 committed Jul 16, 2023
1 parent 5953fe6 commit 8c93f5f
Show file tree
Hide file tree
Showing 4 changed files with 73 additions and 63 deletions.
26 changes: 14 additions & 12 deletions src/events/messageUpdate.ts
Original file line number Diff line number Diff line change
Expand Up @@ -94,22 +94,24 @@ async function globalChat(newMessage: Message) {
newMessage.cleanContent.slice(0, 1500) === newMessage.cleanContent
? newMessage.cleanContent
: `${newMessage.cleanContent.slice(0, 1500)}...` || '内容がありません。';
let replymsg: string;
if (newMessage.type === MessageType.Reply) {
const repliedMessage = await newMessage.fetchReference();
replymsg = repliedMessage.content;
if (repliedMessage.content.includes('\n')) {
replymsg = repliedMessage.content.slice(repliedMessage.content.indexOf('\n'));
}
const embed = new EmbedBuilder()
.setAuthor({
name:
repliedMessage.author.discriminator === '0'
? repliedMessage.author.globalName
? `${repliedMessage.author.globalName}(@${repliedMessage.author.username})`
: `@${repliedMessage.author.username}`
: `${repliedMessage.author.username}#${repliedMessage.author.discriminator}`,
iconURL: repliedMessage.author.extDefaultAvatarURL({ extension: 'webp' }),
})
.setDescription(repliedMessage.content ?? 'メッセージの内容がありません。')
.setColor(Colors.Blue);
stickerEmbeds.push(embed);
}
webhook.editMessage(value.messageId, {
content:
newMessage.type === MessageType.Reply
? replymsg.replaceAll('\n', ' ').replaceAll('> ', '').slice(0, 15) ===
replymsg.replaceAll('\n', ' ').replaceAll('> ', '')
? `> ${replymsg.replaceAll('\n', ' ').replaceAll('> ', '')}\n${content}`
: `> ${replymsg.replaceAll('\n', ' ').replaceAll('> ', '').slice(0, 15)}...\n${content}`
: content,
content,
files: attachments,
embeds: stickerEmbeds,
});
Expand Down
36 changes: 16 additions & 20 deletions src/messages/globalChat.ts
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ export default async function (message: Message) {
webhooks.find((value) => value.name === 'Aqued').owner.id !== message.client.user.id
? await channel.createWebhook({ name: 'Aqued' })
: webhooks.find((value) => value.name === 'Aqued');
const attachments: Array<string | AttachmentBuilder> = [];
const attachments: (string | AttachmentBuilder)[] = [];
if (message.attachments.size > 0) {
message.attachments.map((attachment) =>
attachments.push(
Expand All @@ -69,27 +69,29 @@ export default async function (message: Message) {
message.cleanContent.slice(0, 1500) === message.cleanContent
? message.cleanContent
: `${message.cleanContent.slice(0, 1500)}...` || '内容がありません。';
let replymsg: string;
if (message.type === MessageType.Reply) {
const repliedMessage = await message.fetchReference();
replymsg = repliedMessage.content;
if (repliedMessage.content.includes('\n')) {
replymsg = repliedMessage.content.slice(repliedMessage.content.indexOf('\n'));
}
const embed = new EmbedBuilder()
.setAuthor({
name:
repliedMessage.author.discriminator === '0'
? repliedMessage.author.globalName
? `${repliedMessage.author.globalName}(@${repliedMessage.author.username})`
: `@${repliedMessage.author.username}`
: `${repliedMessage.author.username}#${repliedMessage.author.discriminator}`,
iconURL: repliedMessage.author.extDefaultAvatarURL({ extension: 'webp' }),
})
.setDescription(repliedMessage.content ?? 'メッセージの内容がありません。')
.setColor(Colors.Blue);
stickerEmbeds.push(embed);
}
if (user.avatar) {
const avatar = user.avatar.startsWith('a_')
? user.extDefaultAvatarURL({ extension: 'gif' })
: user.extDefaultAvatarURL({ extension: 'webp' });
await webhook
.send({
content:
message.type === MessageType.Reply
? replymsg.replaceAll('\n', ' ').replaceAll('> ', '').slice(0, 15) ===
replymsg.replaceAll('\n', ' ').replaceAll('> ', '')
? `> ${replymsg.replaceAll('\n', ' ').replaceAll('> ', '')}\n${content}`
: `> ${replymsg.replaceAll('\n', ' ').replaceAll('> ', '').slice(0, 15)}...\n${content}`
: content,
content,
files: attachments,
embeds: stickerEmbeds,
avatarURL: avatar,
Expand Down Expand Up @@ -126,13 +128,7 @@ export default async function (message: Message) {
const avatar = user.extDefaultAvatarURL({ extension: 'webp' });
await webhook
.send({
content:
message.type === MessageType.Reply
? replymsg.replaceAll('\n', ' ').replaceAll('> ', '').slice(0, 15) ===
replymsg.replaceAll('\n', ' ').replaceAll('> ', '')
? `> ${replymsg.replaceAll('\n', ' ').replaceAll('> ', '')}\n${content}`
: `> ${replymsg.replaceAll('\n', ' ').replaceAll('> ', '').slice(0, 15)}...\n${content}`
: content,
content,
files: attachments,
embeds: stickerEmbeds,
avatarURL: avatar,
Expand Down
36 changes: 21 additions & 15 deletions src/messages/superGlobalChat.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/* eslint-disable unicorn/no-nested-ternary */
import { ChannelType, Colors, EmbedBuilder, Message, SnowflakeUtil, Webhook } from 'discord.js';
import { ChannelType, Colors, EmbedBuilder, Message, SnowflakeUtil, User, Webhook } from 'discord.js';
import { MessageData } from '../utils/SuperGlobalChatType.js';
import { calculateUserDefaultAvatarIndex } from '@discordjs/rest';
import { inspect } from 'node:util';
Expand Down Expand Up @@ -39,19 +39,27 @@ export default async function (message: Message) {
};

if (message.attachments.size > 0) data['attachmentsUrl'] = message.attachments.map((value) => value.proxyURL);
let replymsg: string;
const content =
message.content.slice(0, 1500) === message.content ? message.content : `${message.content.slice(0, 1500)}...`;

const embeds: EmbedBuilder[] = [];
if (message.reference) {
const repliedMessage: { content: string; id: string } | undefined =
const repliedMessage: { content: string; id: string; user: User } | undefined =
await message.client.botData.superGlobalChat.replyMessages.get(message.reference.messageId);
if (!repliedMessage) return;
data['reference'] = repliedMessage.id;
replymsg = repliedMessage.content;
if (repliedMessage.content.includes('\n')) {
replymsg = repliedMessage.content.slice(repliedMessage.content.indexOf('\n'));
}
const embed = new EmbedBuilder()
.setAuthor({
name:
repliedMessage.user.discriminator === '0'
? repliedMessage.user.globalName
? `${repliedMessage.user.globalName}(@${repliedMessage.user.username})`
: `@${repliedMessage.user.username}`
: `${repliedMessage.user.username}#${repliedMessage.user.discriminator}`,
iconURL: repliedMessage.user.extDefaultAvatarURL({ extension: 'webp' }),
})
.setDescription(repliedMessage.content ?? 'メッセージの内容がありません。')
.setColor(Colors.Blue);
embeds.push(embed);
}

for (const channel of channels) {
Expand All @@ -67,12 +75,7 @@ export default async function (message: Message) {
: webhooks.find((value) => value.name === 'Aqued');
await webhook
.send({
content: data.reference
? replymsg.replaceAll('\n', ' ').replaceAll('> ', '').slice(0, 15) ===
replymsg.replaceAll('\n', ' ').replaceAll('> ', '')
? `> ${replymsg.replaceAll('\n', ' ').replaceAll('> ', '')}\n${content}`
: `> ${replymsg.replaceAll('\n', ' ').replaceAll('> ', '').slice(0, 15)}...\n${content}`
: content,
content,
files: data.attachmentsUrl || [],
avatarURL: message.author.avatar
? message.client.rest.cdn.avatar(message.author.id, message.author.avatar, { extension: 'webp' })
Expand All @@ -81,6 +84,7 @@ export default async function (message: Message) {
? calculateUserDefaultAvatarIndex(message.author.id)
: Number(message.author.discriminator) % 5,
),
embeds,
username: `${message.author.username}${
message.author.discriminator === '0' ? '' : `#${message.author.discriminator}`
}(id: ${message.author.id})`,
Expand All @@ -94,19 +98,21 @@ export default async function (message: Message) {
});
await message.client.botData.superGlobalChat.messages.set(message.id, array);
if (message.reference) {
const repliedMessage: { content: string; id: string } | undefined =
const repliedMessage: { content: string; id: string; user: User } | undefined =
await message.client.botData.superGlobalChat.replyMessages.get(message.reference.messageId);
if (!repliedMessage) return;
await message.client.botData.superGlobalChat.replyMessages.set(value.id, {
content: message.content,
id: repliedMessage.id,
user: repliedMessage.user,
});
}
});
}
await message.client.botData.superGlobalChat.replyMessages.set(message.id, {
content: message.content,
id: message.id,
user: message.author,
});
message.react('✅');
const channel = message.client.channels.cache.get(message.client.botData.sgcJsonChannelId);
Expand Down
38 changes: 22 additions & 16 deletions src/messages/superGlobalChatDataGet.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/* eslint-disable unicorn/no-nested-ternary */
import { Message, ChannelType, Webhook, Colors, EmbedBuilder, SnowflakeUtil } from 'discord.js';
import { Message, ChannelType, Webhook, Colors, EmbedBuilder, SnowflakeUtil, User } from 'discord.js';
import { EmptyData, MessageData, MessageDeleteData, MessageEditData } from '../utils/SuperGlobalChatType.js';
import { calculateUserDefaultAvatarIndex } from '@discordjs/rest';
import { inspect } from 'node:util';
Expand All @@ -15,7 +15,7 @@ export default async function (message: Message) {
const data: MessageData | MessageDeleteData | MessageEditData | EmptyData = JSON.parse(message.content);
switch (data.type) {
case 'message': {
await replyMessages.set(data.messageId, { content: data.content, id: message.id });
await replyMessages.set(data.messageId, { content: data.content, id: message.id, user: message.author });

for (const value of registers) {
const channel = message.client.channels.cache.get(value);
Expand All @@ -29,15 +29,24 @@ export default async function (message: Message) {
? await channel.createWebhook({ name: 'Aqued' })
: webhooks.find((value) => value.name === 'Aqued');
const files = data.attachmentsUrl ?? [];
let replymsg: string;
const embeds: EmbedBuilder[] = [];
if (data.reference) {
const repliedMessage: { content: string; id: string } | undefined =
const repliedMessage: { content: string; id: string; user: User } | undefined =
await message.client.botData.superGlobalChat.replyMessages.get(data.reference);
if (!repliedMessage) return;
replymsg = repliedMessage.content;
if (replymsg.includes('\n')) {
replymsg = replymsg.slice(replymsg.indexOf('\n'));
}
const embed = new EmbedBuilder()
.setAuthor({
name:
repliedMessage.user.discriminator === '0'
? repliedMessage.user.globalName
? `${repliedMessage.user.globalName}(@${repliedMessage.user.username})`
: `@${repliedMessage.user.username}`
: `${repliedMessage.user.username}#${repliedMessage.user.discriminator}`,
iconURL: repliedMessage.user.extDefaultAvatarURL({ extension: 'webp' }),
})
.setDescription(repliedMessage.content ?? 'メッセージの内容がありません。')
.setColor(Colors.Blue);
embeds.push(embed);
}
const content =
data.content.slice(0, 1500) === data.content ? data.content : `${data.content.slice(0, 1500)}...`;
Expand All @@ -47,16 +56,12 @@ export default async function (message: Message) {
username: `${data.userName}${data.userDiscriminator === '0' ? '' : `#${data.userDiscriminator}`}(id: ${
data.userId
}) | ${message.author.username} 経由`,
content: data.reference
? replymsg.replaceAll('\n', ' ').replaceAll('> ', '').slice(0, 15) ===
replymsg.replaceAll('\n', ' ').replaceAll('> ', '')
? `> ${replymsg.replaceAll('\n', ' ').replaceAll('> ', '')}\n${content}`
: `> ${replymsg.replaceAll('\n', ' ').replaceAll('> ', '').slice(0, 15)}...\n${content}`
: content,
content,
embeds,
avatarURL: data.userAvatar
? `${message.client.rest.cdn.avatar(data.userId, data.userAvatar, { extension: 'webp' })}`
: `${this.client.rest.cdn.defaultAvatar(
this.discriminator === '0'
: `${this.user.client.rest.cdn.defaultAvatar(
this.user.discriminator === '0'
? calculateUserDefaultAvatarIndex(message.author.id)
: Number(message.author.discriminator) % 5,
)}`,
Expand All @@ -72,6 +77,7 @@ export default async function (message: Message) {
await message.client.botData.superGlobalChat.replyMessages.set(value.id, {
content: message.content,
id: data.messageId,
user: message.author,
});
});
}
Expand Down

0 comments on commit 8c93f5f

Please sign in to comment.