Первый вопрос, а чем String.Split не удовлетворил?
var commands=callback.message.Split(null);
switch(commands[0])
{
case "!send":
case "!bay":
}
или например, если аргумент содержит пробелы
if (command.Contains("!send "))
{
var arg=command.Remove("!send ");
}