สวัสดีครับ/ค่ะทุกท่าน ในบทความนี้เราจะมาพูดถึงการสร้าง Discord Bot ด้วย dotnet C# ซึ่งเป็นตอนที่ 6 ของซีรีส์「🔴 LIVE R & D」โดยในตอนนี้เราจะต้องเพิ่ม Option อีกอะไรบ้างใน Discord Bot น้องฟา มาเริ่มเลยกันเลยครับ/ค่ะ!
ขั้นแรก เราจะต้องเปิดโปรแกรม Visual Studio ขึ้นมาแล้วสร้าง Project ใหม่โดยเลือกเลือกdotnet Core -> Console App (C#) และตั้งชื่อ Project ว่า DiscordBot หรือตั้งชื่อได้ตามที่คุณต้องการ
เมื่อสร้าง Project เสร็จเราจะต้องติดตั้ง Discord.Net ผ่าน Nuget ดังนี้
Install-Package Discord.Net -Version 2.3.6
Install-Package Discord.Net.Commands -Version 2.3.6
จากนั้นเราจะทำการเรียกใช้งาน Discord.Net ในโปรแกรมของเรา ด้วยการเพิ่ม using Discord และ using Discord.Commands จากนั้นเราจะสร้าง class Program
using Discord;
using Discord.Commands;
namespace DiscordBot
{
class Program
{
static void Main(string[] args) => new Program().RunBot();
private DiscordSocketClient _client;
private CommandService _commands;
public async Task RunBot()
{
_client = new DiscordSocketClient();
_commands = new CommandService();
await _client.LoginAsync(TokenType.Bot, "YOUR_TOKEN_HERE");
await _client.StartAsync();
await RegisterCommands();
await Task.Delay(-1);
}
public async Task RegisterCommands()
{
_client.MessageReceived += HandleCommandAsync;
await _commands.AddModulesAsync(Assembly.GetEntryAssembly());
}
public async Task HandleCommandAsync(SocketMessage messageParam)
{
var message = messageParam as SocketUserMessage;
if (message == null) return;
var context = new SocketCommandContext(_client, message);
int argPos = 0;
if (message.HasStringPrefix("!", ref argPos) || message.HasMentionPrefix(_client.CurrentUser, ref argPos))
{
var result = await _commands.ExecuteAsync(context, argPos, null);
if (!result.IsSuccess)
Console.WriteLine(result.ErrorReason);
}
}
}
}
ใน class Program นี้เราจะสร้าง Discord Bot ด้วย DiscordSocketClient และ CommandService และเรียกใช้งาน RegisterCommands สำหรับเริ่มต้นการรัน Bot และ HandleCommandAsync สำหรับการจัดการคำสั่ง
ทีนี้เรามาสร้าง module สำหรับ Bot น้องฟา โดยสร้าง class RnDModule
[Group("rnd")]
public class RnDModule : ModuleBase<SocketCommandContext>
{
[Command("hello")]
public async Task Hello()
{
await ReplyAsync("Hello, World!");
}
// Add your additional options here...
}
ใน class RnDModule นี้เราได้สร้าง method hello สำหรับ Bot ทำการ reply ข้อความ "Hello, World!" เมื่อมีคำสั่ง ‘!rnd hello’ ซึ่งทำให้ Bot ตอบกลับว่า "Hello, World!"
พอเราเพิ่ม Option อื่นๆ เรียบร้อยแล้ว เราสามารถเรียกใช้งาน Bot ได้ตามปกติโดยใช้ Token ของ Bot ที่ได้มาจากการสร้างบอทใน Discord Developer Portal
หมายเหตุ: ให้แน่ใจว่าคุณมีความเข้าใจในการใช้งาน Discord Bot และข้อควรระวังในการสร้าง Bot ใน Discord แล้ว
นี่คือวิธีการ「🔴 LIVE R & D」สร้าง Discord Bot (น้องฟา) ด้วย dotnet C# ในตอนที่ 6 โดยการเพิ่ม Option อื่นๆ ตามที่คุณต้องการ ขอบคุณที่ติดตามครับ/ค่ะ!