Update examples

This commit is contained in:
Szymon Uglis 2021-01-04 02:20:20 +01:00 committed by Szymon Uglis
parent e5a77c5f38
commit 2d33610c88
No known key found for this signature in database
GPG key ID: 112376C5BEE91FE2
10 changed files with 37 additions and 22 deletions

View file

@ -20,17 +20,17 @@ void main() {
}
// Get guild object from message
final guild = (e.message as GuildMessage).guild!;
final guild = (e.message as GuildMessage).guild.getFromCache()!;
// Created text channel. Remember discord will lower the case of name and replace spaces with - and do other sanitization
final channel = await guild.createChannel("TEST CHANNEL", ChannelType.text) as GuildTextChannel;
final channel = (await guild.createChannel("TEST CHANNEL", ChannelType.text)) as GuildTextChannel;
// Send feedback
await e.message.channel.send(content: "Crated ${channel.mention}");
await e.message.channel.getFromCache().sendMessage(content: "Crated ${channel.mention}");
// Delete channel that we just created
await channel.delete();
Gu
// Send feedback
await e.message.channel.send(content: "Deleted ${channel.mention}");
}

View file

@ -22,13 +22,13 @@ void main() {
// Creating role with RoleBuilder. We have to cast `e.message` to GuildMessage because we want to access guild property
// and generic dont have that.
final role = await (e.message as GuildMessage).guild!.createRole(RoleBuilder("testRole")..color = DiscordColor.chartreuse);
final role = await (e.message as GuildMessage).guild.getFromCache()!.createRole(RoleBuilder("testRole")..color = DiscordColor.chartreuse);
// Cast message author to member because webhook can also be message author. And add role to user
await (e.message.author as CachelessMember).addRole(role);
await (e.message as GuildMessage).member.addRole(role);
// Send message with confirmation of given action
await e.message.channel.send(content: "Added [${role.name}] to user: [${e.message.author.tag}");
await e.message.channel.getFromCache()?.sendMessage(content: "Added [${role.name}] to user: [${e.message.author.tag}");
}
});
}

View file

@ -1,5 +1,13 @@
import "package:nyxx/nyxx.dart";
DiscordColor getColorForUserFromMessage(Message message) {
if (message is GuildMessage) {
return message.member.highestRole.color;
}
return DiscordColor.black;
}
// Main function
void main() {
// Create new bot instance. Replace string with your token
@ -29,10 +37,10 @@ void main() {
..addFooter((footer) {
footer.text = "Footer example, good";
})
..color = (e.message.author is CacheMember) ? (e.message.author as CacheMember).color : DiscordColor.black;
..color = getColorForUserFromMessage(e.message);
// Sent an embed to channel where message received was sent
e.message.channel.send(embed: embed);
e.message.channel.getFromCache()?.sendMessage(embed: embed);
}
});
}

View file

@ -20,10 +20,10 @@ void main() {
}
// Create default invite. We have to cast channel to access guild specific functionality.
final invite = await (e.message.channel as GuildTextChannel).createInvite();
final invite = await (e.message.channel as TextGuildChannel).createInvite();
// Send back invite url
await e.message.channel.send(content: invite.url);
await e.message.channel.getFromCache()?.sendMessage(content: invite.url);
}
});
}

View file

@ -35,10 +35,10 @@ void main() {
final userToBan = getUserToBan(e.message as GuildMessage);
// Ban user using variable initialized before
await (e.message as GuildMessage).guild!.ban(userToBan);
await (e.message as GuildMessage).guild.getFromCache()!.ban(userToBan);
// Send feedback
await e.message.channel.send(content: "👍");
await e.message.channel.getFromCache()?.send(content: "👍");
}
// Check if message content equals "!embed"
@ -52,10 +52,10 @@ void main() {
final userToBan = getUserToBan(e.message as GuildMessage);
// Kick user
await (e.message as GuildMessage).guild!.kick(userToBan);
await (e.message as GuildMessage).guild.getFromCache()!.kick(userToBan);
// Send feedback
await e.message.channel.send(content: "👍");
await e.message.channel.getFromCache()?.sendMessage(content: "👍");
}
});
}

View file

@ -21,13 +21,13 @@ void main() {
}
// Get current channel
final messageChannel = e.message.channel as CacheGuildChannel;
final messageChannel = (e.message.channel.getFromCache()) as GuildChannel;
// Get member from id
final member = await (e.message as GuildMessage).guild!.getMemberById(302359032612651009.toSnowflake());
final member = await (e.message as GuildMessage).guild.getFromCache()!.members[302359032612651009.toSnowflake()]!;
// Get current member permissions in context of channel
final permissions = messageChannel.effectivePermissions(member as CacheMember);
final permissions = await messageChannel.effectivePermissions(member);
// Get current member permissions as builder
final permissionsAsBuilder = permissions.toBuilder()..sendMessages = true;

View file

@ -15,7 +15,7 @@ void main() {
// Check if message content equals "!ping"
if (e.message.content == "!ping") {
// Send "Pong!" to channel where message was received
e.message.channel.send(content: "Pong!");
e.message.channel.getFromCache()?.sendMessage(content: "Pong!");
}
});
}

View file

@ -19,7 +19,7 @@ void main() {
// Files argument needs to be list of AttachmentBuilder object with
// path to file that you want to send. You can also use other
// AttachmentBuilder constructors to send File object or raw bytes
e.message.channel.send(files: [AttachmentBuilder.path("kitten.jpeg")]);
e.message.channel.getFromCache().sendMessage(files: [AttachmentBuilder.path("kitten.jpeg")]);
}
// Check if message content equals "!givemeembed"
@ -33,7 +33,7 @@ void main() {
..thumbnailUrl = attachment.attachUrl;
// Send everything we created before to channel where message was received.
e.message.channel.send(files: [attachment], embed: embed, content: "HEJKA!");
e.message.channel.getFromCache()?.sendMessage(files: [attachment], embed: embed, content: "HEJKA!");
}
});
}

View file

@ -1,4 +1,5 @@
part of nyxx;
abstract class IGuildEmoji extends SnowflakeEntity implements IEmoji {
/// True if emoji is partial.
bool get isPartial;
@ -9,7 +10,7 @@ abstract class IGuildEmoji extends SnowflakeEntity implements IEmoji {
IGuildEmoji._new(Map<String, dynamic> raw): super(Snowflake(raw["id"]));
/// Creates partial emoji from given String or Snowflake.
static GuildEmojiPartial fromId(dynamic id) => GuildEmojiPartial._new({"id": id.toString()});
factory IGuildEmoji.fromId(dynamic id) => GuildEmojiPartial._new({ "id": id.toString() });
@override
String formatForMessage() => "<:$id>";

View file

@ -187,6 +187,8 @@ abstract class IHttpEndpoints {
String stickerUrl(String stickerHash, String extension);
String emojiUrl(Snowflake emojiId);
Future<DMChannel> createDMChannel(Snowflake userId);
}
@ -1115,6 +1117,10 @@ class _HttpEndpoints implements IHttpEndpoints {
String stickerUrl(String stickerHash, String extension) =>
"https://cdn.${Constants.cdnHost}/stickers/$stickerHash.$extension";
@override
String emojiUrl(Snowflake emojiId) =>
"https://cdn.discordapp.com/emojis/$emojiId.png";
@override
Future<DMChannel> createDMChannel(Snowflake userId) async {
final response = await _httpClient._execute(BasicRequest._new("/users/@me/channels", method: "POST", body: {