selene 0.1.0 selene: ^0.1.0 copied to clipboard
Predictable Dart bindings for the Discord API.
import 'dart:async';
import 'package:logging/logging.dart';
import 'package:selene/selene.dart' as discord;
void main() {
runBot();
}
Future runBot() async {
// Create our client instance
var client = new discord.Client.create();
// Listen for log events
Logger.root.onRecord.listen((LogRecord record) {
print('[${record.loggerName}] ${record.level.name}: ${record.time}: ${record
.message}');
});
// Listen to the message created event
client.dispatcher.onMessageCreate.listen((discord.Message message) async {
if (message.content == '!ping') {
// Pong
await message.channel.sendMessage(
content:
'Pong!'); // sendMessage takes either content, embed or both. At least one must be supplied.
}
if (message.content == '!whoareyou' || message.content == '!bot') {
var bot = client.cache.self; // Get the client's current user
// Create an embed
var embed = new discord.EmbedBuilder();
embed.author = new discord.EmbedAuthorBuilder.fromUser(
bot); // Fill in properties from user
embed.description =
"Hello there! I am ${bot.username}#${bot.discriminator}!";
await message.channel
.sendMessage(embed: embed.build()); // Construct embed
}
});
// Initiate WebSocket connection
await client.start();
// Login and authorize
await client.login(
'MyToken', /* type: 'Bot' -- This parameter is optional and defaults to Bot. */
);
// Client will automatically block the thread
}