Мой друг и я пишем бот IRC С#, и мы ищем способ включить модульную систему, чтобы пользователи могли писать специальные модули для расширения функции.
Бот использует Regex для разделения всех необработанных данных с сервера, а затем запускает соответствующее событие с данными. Например, типичный обработчик событий может выглядеть так:
OnChannelMessage(object sender, ChannelMessageEventArgs e)
{
}
В ChannelMessageEventArgs
будет имя канала, ник отправителя, сообщение и т.д.
Я хотел бы иметь систему плагинов, чтобы люди могли создавать модули и загружать/выгружать их по своему усмотрению, когда бот загружается или работает.
В идеале я хотел бы скомпилировать файлы .cs
на лету, а в файле plugin.cs было бы несколько вещей:
- какое событие захватить, например, OnChannelMessage и Channeldata в OnChannelEventArgs
- что делать, когда эта информация предоставляется,
- текст справки (который я могу вызвать изнутри главного бота.. так скажите строку, help = "это помощь для этого плагина", которая может быть возвращена в любое время без фактического вызова плагина)
- имя плагина и т.д.
Спасибо за любые идеи о том, с чего начать для тех, кто относительно новичок в программировании.