it should be
procedure OnPlayerSpeak(ID: byte; Text: string);
begin
if Text = '!blue' then Command('/setteam2 ' + InttoStr(ID));
end;
I tried to bold the things that have changed..
' (single quote)s must go around strings you specify
ID is the datatype byte, which is not a string.. which is what the argument / parameter of Command needs, so it must be changed through InttoStr(...) which also works with other datatypes relating to numbers, although not any sort of floats (decimals)