{"id":197,"date":"2026-04-17T19:33:02","date_gmt":"2026-04-17T19:33:02","guid":{"rendered":"https:\/\/theroyalscode.com\/students\/a_carpenter\/?p=197"},"modified":"2026-04-17T19:33:02","modified_gmt":"2026-04-17T19:33:02","slug":"free-friday-4-17-2026","status":"publish","type":"post","link":"https:\/\/theroyalscode.com\/students\/a_carpenter\/2026\/04\/17\/free-friday-4-17-2026\/","title":{"rendered":"Free Friday 4\/17\/2026"},"content":{"rendered":"\n<p><strong>I have recently been developing a Teams app that is supposed to have multiple uses to help the classroom. I have created a simple bot using the Teams Python SDK that quotes whatever the user says, and I have tested it using a localhost and Microsoft devtools.<\/strong>  <\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"517\" src=\"https:\/\/theroyalscode.com\/students\/a_carpenter\/wp-content\/uploads\/2026\/04\/Screenshot-2026-04-17-152652-1024x517.png\" alt=\"\" class=\"wp-image-198\" srcset=\"https:\/\/theroyalscode.com\/students\/a_carpenter\/wp-content\/uploads\/2026\/04\/Screenshot-2026-04-17-152652-1024x517.png 1024w, https:\/\/theroyalscode.com\/students\/a_carpenter\/wp-content\/uploads\/2026\/04\/Screenshot-2026-04-17-152652-300x151.png 300w, https:\/\/theroyalscode.com\/students\/a_carpenter\/wp-content\/uploads\/2026\/04\/Screenshot-2026-04-17-152652-768x388.png 768w, https:\/\/theroyalscode.com\/students\/a_carpenter\/wp-content\/uploads\/2026\/04\/Screenshot-2026-04-17-152652-1536x775.png 1536w, https:\/\/theroyalscode.com\/students\/a_carpenter\/wp-content\/uploads\/2026\/04\/Screenshot-2026-04-17-152652.png 1860w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<pre class=\"wp-block-code\"><code>import asyncio\nimport re\n\nfrom microsoft_teams.api import MessageActivity, TypingActivityInput\nfrom microsoft_teams.apps import ActivityContext, App\nfrom microsoft_teams.devtools import DevToolsPlugin\n\napp = App(plugins=&#91;DevToolsPlugin()])\n\n\n@app.on_message_pattern(re.compile(r\"hello|hi|greetings\"))\nasync def handle_greeting(ctx: ActivityContext&#91;MessageActivity]) -> None:\n    \"\"\"Handle greeting messages.\"\"\"\n    await ctx.send(\"Hello! How can I assist you today?\")\n\n\n@app.on_message\nasync def handle_message(ctx: ActivityContext&#91;MessageActivity]):\n    \"\"\"Handle message activities using the new generated handler system.\"\"\"\n    await ctx.reply(TypingActivityInput())\n\n    if \"reply\" in ctx.activity.text.lower():\n        await ctx.reply(\"Hello! How can I assist you today?\")\n    else:\n        await ctx.reply(f\"You said '{ctx.activity.text}'\")\n\n\ndef main():\n    asyncio.run(app.start())\n\n\nif __name__ == \"__main__\":\n    main()<\/code><\/pre>\n\n\n\n<p><strong>The problem I am now facing is that I am having trouble sideloading it into teams using<\/strong> <strong>said SDK. It keeps telling me I have a or that there&#8217;s a different error. I don&#8217;t get an error code, so I have to go through multiple different solutions. Eventually I will find the error, but it will take time so until I can successfully add the bot to a Teams channel, I will not make any more development to its logic.<\/strong><\/p>\n","protected":false},"excerpt":{"rendered":"<p>I have recently been developing a Teams app that is supposed to have multiple uses to help the classroom. I have created a simple bot using the Teams Python SDK that quotes whatever the user says, and I have tested it using a localhost and Microsoft devtools. The problem I am now facing is that [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[],"class_list":["post-197","post","type-post","status-publish","format-standard","hentry","category-friday"],"_links":{"self":[{"href":"https:\/\/theroyalscode.com\/students\/a_carpenter\/wp-json\/wp\/v2\/posts\/197","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/theroyalscode.com\/students\/a_carpenter\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/theroyalscode.com\/students\/a_carpenter\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/theroyalscode.com\/students\/a_carpenter\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/theroyalscode.com\/students\/a_carpenter\/wp-json\/wp\/v2\/comments?post=197"}],"version-history":[{"count":1,"href":"https:\/\/theroyalscode.com\/students\/a_carpenter\/wp-json\/wp\/v2\/posts\/197\/revisions"}],"predecessor-version":[{"id":199,"href":"https:\/\/theroyalscode.com\/students\/a_carpenter\/wp-json\/wp\/v2\/posts\/197\/revisions\/199"}],"wp:attachment":[{"href":"https:\/\/theroyalscode.com\/students\/a_carpenter\/wp-json\/wp\/v2\/media?parent=197"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/theroyalscode.com\/students\/a_carpenter\/wp-json\/wp\/v2\/categories?post=197"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/theroyalscode.com\/students\/a_carpenter\/wp-json\/wp\/v2\/tags?post=197"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}