如何使用动态插件和适配器在Golang中创建聊天机器人?

I'm new to Golang and writing a chat bot as an exercise.

Basically I'm using net/http and gorilla/mux to handle requests.

For now it can only talk to one specific chat platform (I call it an adapter) and has only one plugin (find a picture on google).

How can I make both adapters and plugins be dynamic - so other developers can write their own stuff and just use my bot as a base platform? Are there any good examples?

Also should I have all the plugins and adapters in one repo/static binary or should they be separate? I know I can do both ways but what would you recommend as a better way to have easier collaboration and extensibility?

Medium post, "Standard Package Layout", by Ben Johnson, helped me think about this.