You also have a ")" on the end of the "hook.Add" line. As Cobalt said, move that to after the "end".
You can also use PlayerSay as Avoid said, although PlayerSay is a serverside hook, so you would do "pl:ConCommand( "bvgrules" )" instead of RunConsoleCommand. It would look like this (using Avoid's code):
function ShowRules( pl, text, teamonly )
if (string.lower(text) == "!rules") then
pl:ConCommand( "bvgrules" )
end
end
hook.Add( "PlayerSay", "Rules", ShowRules )