npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@nohello/teams

v0.1.0

Published

Microsoft Teams adapter for the #nohello skill — wires @nohello/core into a Bot Framework activity handler.

Readme

@nohello/teams

Microsoft Teams adapter for the #nohello skill. Wires @nohello/core into a Bot Framework ActivityHandler. Unlike Slack, Teams requires re-opening ("continuing") a conversation to send a message outside of an active turn — this adapter captures a ConversationReference on every inbound message so the default nudge sender can proactively post once the wait timer elapses.

Use as a library

import { CloudAdapter, ConfigurationBotFrameworkAuthentication, ConfigurationServiceClientCredentialFactory } from 'botbuilder';
import { createNoHelloBot } from '@nohello/teams';

const credentialsFactory = new ConfigurationServiceClientCredentialFactory({
  MicrosoftAppId: process.env.MICROSOFT_APP_ID,
  MicrosoftAppPassword: process.env.MICROSOFT_APP_PASSWORD,
});
const adapter = new CloudAdapter(new ConfigurationBotFrameworkAuthentication({}, credentialsFactory));

const { handler, engine } = createNoHelloBot(adapter, process.env.MICROSOFT_APP_ID!, {
  config: { waitSeconds: 60, tone: 'friendly' },
});

// hand `handler` to your existing HTTP route that calls adapter.process(req, res, ctx => handler.run(ctx))

mentionUser behavior

With mentionUser: true (the default), nudges @-mention the sender using a proper Teams mention entity built from the captured conversation reference. This needs both the sender's id and name from the original activity — if the name is missing (context.activity.from has an id but no name), the nudge silently falls back to plain, un-mentioned text. Teams virtually always includes the name on user activities, so this rarely matters in practice, but if your nudges aren't mentioning people, this fallback is the first thing to check.

Run the standalone bot

This package also ships a ready-to-run bot (src/standalone.ts) driven by environment variables.

1. Register an Azure Bot

  1. In the Azure Portal, create an Azure Bot resource (or use the Teams Toolkit for a guided flow).
  2. Note the Microsoft App ID and generate a client secret (App Password).
  3. Set the bot's messaging endpoint to https://<your-host>/api/messages.
  4. Package and sideload the Teams app manifest pointing at that bot, or publish it to your org's Teams app catalog.

2. Configure

export MICROSOFT_APP_ID=...
export MICROSOFT_APP_PASSWORD=...
export MICROSOFT_APP_TENANT_ID=...      # required for single-tenant apps
export MICROSOFT_APP_TYPE=MultiTenant   # or SingleTenant
export NOHELLO_WAIT_SECONDS=90          # optional, default 90
export NOHELLO_TONE=professional        # professional | friendly | satirical | custom
export NOHELLO_COOLDOWN_SECONDS=600     # optional, default 600
export NOHELLO_CUSTOM_TEMPLATE=""       # required if NOHELLO_TONE=custom
export PORT=3978

3. Run

npm run build --workspace @nohello/teams
npm run start --workspace @nohello/teams

Expose the port with a tunnel (e.g. devtunnel or ngrok) during local development so Teams can reach /api/messages.