Upvote:4
Many previous questions addressed related problems:
The most important thing to know is that Switzerland is part of the Schengen area so you should look up rules that apply to your situation in the Schengen area. You also wrote that you are traveling βfromβ Botswana but in fact this does not make any difference. What counts is your nationality/which passport you are holding.
Assuming you are a citizen of Botswana, since it is not an annex IV country and is not, as far as I know, subject to additional restrictions from Switzerland, you can in principle transit visa-free if both of your flights come from or go to destinations outside of the Schengen area so as to allow you to stay in the international transit zone of the airport. However, if you have a long transit, want to stay in the city or connect to another Schengen airport, you would need a regular transit visa. See US green card holder: Do I need a transit visa when my journey includes a flight within a Schengen country?
If your nationality did not allow you to transit visa-free, the Canadian visa would not necessarily be relevant per se (beyond the fact that you obviously need a visa for your onward travel) as I think that only some types of residence permits/long-term visas provide an exemption from the airport transit visa in the Schengen area, where applicable. (EDITED: Not sure this is correct but, as I explained above, it's not relevant for Botswana nationals in any case.)
Contacting the airline, airport or Swiss consulate in advance might be a good idea in any case.