I want to have a special channel primarily to post company's announcement in my Slack team, and I don't want anybody, except me and a select few people, to post in that channel, to not distract the channel viewer from the announcement content. But I still want everybody to be able to see the content of the channel (e.g. making it one of the default channels new user automatically joins to). Can I do that in Slack? How? Or is there an alternative or workaround to achieve the similar result?
You can restrict who can post to the #general channel on your team settings, in http://my.slack.com/admin/settings#permissions
Available restrictive options are Team Owners and Admins or Team Owners only.
You can rename #general to something more appropriate like "#announcements".
Currently, you cannot restrict posting rights to other public channels than #general.
More information is available on https://get.slack.help/hc/en-us/articles/220105027-The-general-channel
There still is no way to do it inside Slack :( but I've worked around this by using a simple Slack App using Amazon AWS Lambda. The actual Lambda python function could just as easily be modified to run on some other server, of course.
we also need to have some channels that only certain people can post and readonly for others, so I've wrote very simple script that does it for us. You can take a look https://github.com/ypogorelova/slack_blockbot